Obvious Obsolesence

One subtle way to encourage users to buy a new version of your software, is to make the old version feel old. 

If the only difference between the previous version and the current version is features, and the previous version has all the features that the user needs, then what incentive is there to upgrade?

The Ribbon Bar in the new version of Office is a perfect example of this, as was the subtle UI changes in previous versions of Office.  And Windows, for that matter.

If you look at open source applications, where there's no real reason to try to force people to upgrade (since you're generally not getting money for the upgrades), you'll find these sorts of changes are much less common.  Firefox 2.0 looks like Firefox 1.5, which looks like Firefox 1.0.  In comparison, IE7 looks very different from IE6.

The drawback is that for users who like running the latest stuff, it means they're constantly refamiliarizing themselves with their software, since part of the upgrade incentive is that things are different.

I just ran into a good example of "make your old stuff feel old" in the new Vista Remote Desktop client.  When you try to connect to a session, it first asks you for your credentials, and uses the new protocol to authenticate before you get to the computer.  This is a good thing, but it's on by default, and not supported by Windows XP or Windows Server 2003, so whenever you connect to any "old" system, you get a warning:

Just a little reminder that it's time to upgrade that other computer over there.  In the name of security, I'm sure, but still.