What I think is developers of paid apps (not free) should be given one "free" fix. Often their app took a couple weeks (or longer) to get approved, in that time they found/fixed bugs, or in the first couple days of an app's release people complain about bugs that the developer can fix quickly and safely. In that situation they should be allowed to put up a fixed version within the first week of an app's release without having to be re-approved. And if anybody abuses this (by adding material that Apple doesn't allow in the non-approved "fix") they should be immediately banned from the service and forfeit any sales amounts (Apple can just add that to the legal agreement they already make developers agree to, to make it all legal).
While it would be best if apps weren't released until they were bug free, that's just not possible. *All* software released contains bugs - including ones that the developer knows about. But there comes a time in the development cycle where they have to determine whether a bug is worth fixing, because the fixing of that bug could cause more bugs, some which could be worse than the original. As well, unfortunately not many developers have full dedicated testing teams, even some large developers. And with the extremely low prices iPhone apps sell for, I could easily see developers wanting to put more money to making their app more useful and full-featured than into testers.