Software developer Mike Ash just outlined the 22 steps he went through to get his application onto your iPhone:
Development for iPhone is an incredibly difficult process, much more difficult than it needs to be. The arduous process of shipping an application for the Mac suddenly appears to be absolutely straightforward after going through this mess. I really don't envy those companies who have staked their success to the iPhone platform. The amount of arbitrary hassle, uncertainty, and delay in the process can only feel vastly worse when your livelihood depends on it.
Based on Mike's notes, the process clearly leaves a bit to be desired, but doesn't seem all that different than developing for other closed-wall systems, like video games. And because a mobile phone has to deal with the FCC and other restrictions there will always be inherent difficulties.
A lot of what Mike went through seems bad/weird communication, but at least Apple put the app through bug testing and eventually got it out the door. His post is a great read to shed some light on what developers go through to get you great software.