Eh, the problem will get fixed eventually when in 5-10 years everyone upgrades to Vista and later OSes which come with .NET. It's similar to the IE6 problem. People aren't willing to upgrade their old machines and Microsoft can't force a Windows Update without incurring the wrath of antitrust prosecutors.
Segmenting the download into smaller chunks isn't a panacea either. As a case point, take a look at the Tablet SDK. To redistribute that to non-Tablet, developers have to choose between 6 distinct components and check whether each one is on the system (http://msdn.microsoft.com/en-us/library/ms819420.aspx)... no user's gonna know whether they have the "Ink Divider object" installed. Having big versioned checkpoints is definitely the clearest from a user and development perspective (e.g. "make sure you have .NET 3.5").
So in the meantime, all Microsoft can do is keep working to make .NET better.
Segmenting the download into smaller chunks isn't a panacea either. As a case point, take a look at the Tablet SDK. To redistribute that to non-Tablet, developers have to choose between 6 distinct components and check whether each one is on the system (http://msdn.microsoft.com/en-us/library/ms819420.aspx)... no user's gonna know whether they have the "Ink Divider object" installed. Having big versioned checkpoints is definitely the clearest from a user and development perspective (e.g. "make sure you have .NET 3.5").
So in the meantime, all Microsoft can do is keep working to make .NET better.