Just to add to what many people have already said, "Buzz" is a key factor. The "hype-train" of a game can indeed make it very successful. Steam is an option, particularly if you want to reach the biggest user-base of gamers (as we all know Steam has the most users). However, and i can't stress this enough: It is extremely difficult to get any indie game onto Steam unless it has a huge amount of "Buzz".
However there are quite a few specifically tailored alternatives: Desura, Indievania and IndieCity.
So there's defiantly plenty of options, I believe Desura is probably your best bet to getting the biggest commercial audience without too much worry.
I say "too much worry" because it's important to note that each service will have quality control. Steam is known to have very high standards albeit a bit obvious, whereas the alternatives suggested are defiantly a lot more varied and open to all sorts of games. Which is why i say it's your best bet.
There is also the legal side of things, and of course this depends on where you live but there is the matter of taxes, and it's also important not to forget that each of the services will take a specific cut of the sales (their cut varies from service to service). Do your research and find the best one for you.
Note: This answer is very much tailored to using indie-game hosting services that are already on the internet, and there are other alternatives such as Andrew Jackman stated in his answer, but for the majority of indie developers, depending on their background, using an established service is the most straight forward way.
(For example, I personally have no experience with Silverlight or using any form of web language, so personally for me, using a pre-defined service were all I have to worry about is making my games meet the terms of the services, is a lot easier.)