You simply can't beat IcoFX for the price and feature set.
It's one of my favorite programs, and it makes icon design incredibly easy. If you've been using MS Paint or the icon editor built into Visual Studio, you owe it to yourself to download IcoFX and give it a try.
Adobe Photoshop is the 300 pound gorilla here, but I think everyone who knows (or is willing to learn) how to use Photoshop already knows that.
But really, it might be the case that we developers are fooling ourselves if we think we're icon designers. Aside from a few specialized cases where you can't find the icon you need, you owe it to your users to use an existing icon library. Seriously, even with the best tools, could you design these? I didn't think so.