A common practice for developers is to give customers either free or discounted upgrades to a new major version if they purchased in the weeks or months prior. Something you can't do when selling via the App Store. However I think I've come up with a hack that requires a bit of planning, but will hopefully work out.
The experiment will be done using my app Lexikon. I'd like to just keep updating the same app, but since it's a niche product there just isn't a large enough customer base to justify throwing away what would normally be a paid upgrade. First I have some minor touch up to do with the app. Perhaps you have seen the new status bar color if you don't opt for the black one coming in iOS 6. Well Lexikon will be switching over to a black status bar. Second it appears that the iPhone can now support all the characters and input to enable the Persian language option. The final additions will be adding ways to communicate non-obnoxiously with my customers directly about the paid upgrade once it is ready.
I've heard that developers can release updates to apps no longer for sale, and customers can still get them. If true I'll be able to pull the existing Lexikon from the store without worrying about cutting off my current customers, and start selling the new bundle ID version to new customers. Customers will also still be able to access Lexikon via the purchased iCloud option. This way all customers who buy Lexikon from that point will get the upgrade for free to the next major version. I suppose then I lose out one benefit of the App Store policy is that I will still have to write any data migration code as necessary. Then once version 3.0 is approved I can communicate to my older customers about the new version and hopefully monetize people who already are using the app, with the incentive of the new major features. It does require enough planning and foresight to lock in the upgrade for free date well in advance, but I think it just might work.