Developers could very well re-architect their application so that when you download the update to v2, you have to unlock the new features with an in-app purchase, but to be honest, it's a lot of extra work for the developer, and there is no way to make it less painful for the users, who will feel like they are getting nickel and dimed by the developer.
Also, for those users that are brand new on the v2 version, it's a very bad experience when they have to immediately buy an in-app purchase just to unlock functionality that should be included. If you drop the price of the v2 version to accomodate this, then your original v1 userbase will complain that they paid twice as much.
Here's an example:
v1.0 of App X sells for $9.99 on the app store. Users buy it and are happy.
v2.0 of App X comes out and to unlock the new features, you must pay $4.99 in-app purchase. Developer drops the price of the app to $4.99 so that new users don't have to pay $14.99 to get all the features.
New users now complain that they have to immediately make an in-app purchase just to unlock the software - they don't notice that it's half price now because they never bought it previously.
Existing users complain that they paid $9.99 and are now being nickel and dimed for updates, when the price is cut in half now.
You can't win. Unfortunately, Apple has create a model that makes a lot of profit for them, and makes it relatively painless for the end user, but it's a model where the developers suffer and can't really support the large applications that receive many new features every year.