But doing that causes me to have to debug twice. Once for .net 4.5 and again for .net 4.0. All for a .net 4.0 application.
You code in .NET v4.5 and test on .NET v4.0. Or you can just use VS2010 and "code and test" all in .NET v4.0. It's a matter of choice.
IMO, you should always debug on the major platform you're going to support. That means if your company decide to major support WinXP, you should debug in there anyway, even if .NET v4.5 somehow backported to support WinXP.
.NET is billed as a "code once run on all platforms" framework. Part of the reason I use it is so I don't have the same problems native developers have between operating systems.
Having several machines is a workaround. Something I would (and could) do if I were developing for an operating system that is seeing 5% - 9% market share.
But Windows XP has the most market share out there! (A whopping 44%) Of all operating systems on the planet, it has the most. Workarounds for dropped operating systems should not have to be applied to an operating system that 44% of my and your customers are using.
I look at the numbers and I am confused as to what Microsoft is thinking.
If your application will do "Administrators" tasks, you should expect UAC on Vista+.
If your application store setting on you application folder but you don't need it to "Run as Administrator", you should expect the setting files could be virtualized on Vista+.
If your application need listen to the network, you need to cater with firewall on WinXP SP2+, and there are different interface to set firewall rule on WinXP/2003 or Vista/Win2008+. And depending on the type of machine you're going to support, you probably need to care about sleep/resume too.
If your application need to support CJK character, because of difference in codepage version being supported (this matters more for we Hong Kong people, because both the change from Unicode 5 to 6 and include of Big5-HKSCS matters to lots of us) Characters legel to be displayed in Vista doesn't mean it can be displayed in WinXP (without government issued patch, which known to have problem to be installed on Win2003 SP2).
So no, if your application will have to expect difference on OS level even if the .NET runtime version is the same.
For argument regarding "Windows XP has the most market share out there!". It's probably still true depending on area you're in. But bear in mind it's market share is diminishing because Microsoft has already cut the retail licensing. And because lots of companies have audit rule that disallow software which no longer have security related updates, lots lots of the companies have started planning to migrate to Win7. It's up to your company to decide when to cut WinXP support. (Remember, for each OS your application decide to support, there's a support cost added on the bill.)