It's the lack of innovation wot dun it.
The question shouldn't be "why are people still running XP?" (fess: I am, and intend to continue to do so).
A better question would be "Why have we failed to induce them to upgrade?" and when I say induce, I don't mean coerce, force, threaten or demand. I mean provided new features in the new versions of XP (if this was linux, W7 would still be called XP 1.8) that would have people thinking "hey, that is really bloody excellent. I *must* have that - even though what I have now is perfectly adequate."
Now, that's not to say that other O/Ss have done any better. Apart from supporting newer hardware, fixing bugs and keeping up with the minor feature-tweaks in KDE/Gnome/whatever linux is still essentially the same old kernel and utilities and freeware that we've had to a decade or two, too.
So, why has Microsoft (and the various mutations of Linux) failed to provide any killer attractions in their new systems? I have no idea - though backwards compatibility, large installed base, poor internal culture and a focus on things that actually make money must be in the mix somewhere.
So until MS, or Ubuntu or some other bunch can come up with something that really, completely changes the rules on personal computing, I fully intend to keep running XP until the hardware fails, my virtualised environments won't support it any more, or OSX comes up with something I can't live without. So I reckon it's safe for another 10 or 20 years. Maybe XP really is all we need?