Wouldn't I have went free with IAP, my sales would have probably stayed at $1.99 every other day, far from a decent income. And there was no real middle ground either, since Apple does not give us, developers, a way to offer discount or upgrade pricing.
Also, please understand, a developer can't afford to invest time adding more and more features indefinitely, for free. When you, the user, make a purchase, you pay for the app ==in that state== (and future bug fixes), not for the app ==and whatever it will become, until the end of time==.
Take Expenses Planner, for example: I added quite a few powerful features and a lot of UI work was made to fit iOS 7, and while, yes, old users paid for the old set of features, for the new ones and the UI overhaul, no one did. Choosing to add IAP(s) for (each of) these new features instead of going free with one IAP, would have been really greedy towards new users, wouldn't it? To create a separate "2.0" app wouldn't have been a better solution either, because it would have hurt old users just as much, not to mention reaching out to let them know of the new app would have been nigh impossible.
So this was my middle ground: add enough new features on top of the UI overhaul so the new pricing model won't feel greedy for neither the old, nor the new users.
As an old user, you can think of it like this, if you will: I paid/will pay $1.99 for the new UI, iCloud, export (plus Passcode and Recurring expenses for Expenses Planner); sounds quite fair to me, especially given the circumstances.
On better news: Apple has provided us a way to check when a particular purchase was made, be it IAP or app. This means that from now on we can check who purchased the app (or IAP) before a certain date (when it went free, for example), then take that into consideration when granting features. Awesome change for both developers and users.