It's tough to be Microsoft. They need to evolve their product, periodically in major ways. Maintaining each version is a huge undertaking and gets progressively more difficult and costly as it becomes more and more archaic and needs to handle things that were never provided for in the original design.
Microsoft doesn't charge maintenance or subscription fees. They sell a piece of software, don't get another dime after the original purchase, and more than a decade later, users still expect it to be robust and secure in a computing environment that is substantially different from when the software was released. That is not a realistic or tenable business model. Microsoft must end free support for a product after some reasonable period of time or go bankrupt.
There are three “stages” in the life cycle. There is an initial period, during which the software is still operating pretty much in its original environment and maintenance can be done at a reasonable cost. There is a period after end-of-life, in which it becomes impractical and cost-prohibitive to do what is required to maintain the product in a changing world within the original design framework. And there is a transition period in between that is really the issue. The question is how to handle that transition period.
At some point, virtually all users must move to a new product. The choice is when. The longer a user waits to change, the costlier it is to maintain their old software. Who should bear the burden of that cost? Should all users pay more to purchase Microsoft products to underwrite the cost of supporting those users who choose not to change because it costs them nothing to keep their old product?
Lifetime free support provides the wrong incentives. Large organizations do have big infrastructure costs but they need to do proper life cycle planning and provide for the transition when it is needed. The cost of maintaining the old infrastructure is part of the equation.
With XP, it is really past its end-of-life. Big players (like governments and major corporations), have purchased a support organization within Microsoft, but that is not available to the average user and is really just a transition strategy for organizations that didn’t adequately plan ahead.
So what are the alternatives? Charging subscription fees from the beginning would likely lead to claims that Microsoft is holding the world's commerce hostage with a “protection” racket. Making maintenance optional would be bad for business--those choosing not to pay the ongoing price would suffer failures and security problems which would cast doubt on Microsoft's products.
It seems like a reasonable strategy Microsoft could adopt would be to provide free support for some reasonable period of time, say five years, specified up front. After that, product maintenance would be by subscription (at a reasonable cost, not a usury price designed to force an upgrade). Users would make their own choice--incur a one-time cost to upgrade and get new capabilities vs. continue to use the old software, pay for maintenance, and over time, pay the cost of the upgrade without getting it. Each user makes his own timing decision and pays his own associated cost. If the replacement product is crap and adoption is slow, there would be a large base of users underwriting the cost of maintaining the old version.
If Microsoft wants to encourage voluntary and early migration, they should focus on ensuring backward compatibility and the ability to emulate the look, feel, and functionality of the old product.
Just my two cents.