It was my understanding that to distribute your app through App Store (the ONLY way to publically distribute), you must pay the $99 per year, regardless of if you charge for your iPhone app or not. This is a bit lame if you ask me..
Part of the cost is for the encrypted certificate that apps need to be signed with in order to legitimately run on the iPhone. This has always been the case.
It also allows Apple to know which developer is responsible for an app. So if your iPhone app ends up being malicious, Apple knows who is responsible.