It's been sort of known for a while now, but today Valve came out and specifically stated that DOTA 2 will be free-to-play. And just like Team Fortress 2 these days, the company will make its money back not from game sales, but from hats.
There'll be a DOTA 2 Store available at launch (actually, it's live now!) that will sell clothes, accessories and other cosmetic items. That's it. Valve says "Dota 2 will not be a pay-to-win game. All the items in the store are cosmetic, and don't affect gameplay."
Because of that, all heroes in the game will be free and available to everyone. You'll even be able to get hold of the cosmetic stuff without paying if you feel like putting the work in, as "players who don't want to buy things from the Dota 2 Store will be able to earn them in a variety of ways, such as by simply playing the game, increasing their Battle Level, or by trading with other players."
As someone who paid $15 over my career to Battlefield Heroes for fancy jackets - the only "microtransaction" stuff I've ever parted with real money for - I've long hoped more publishers went down this path, instead of restricting necessary content behind paywalls. Good to see Valve, at least, agrees.
DOTA 2 will also be part of the Steam Workshop, meaning fans can help create stuff that has the potential to end up in the game itself.
Introducing the Dota Store [Valve]