A week after Vista SP1 RC hit, Windows XP SP3 Release Candidate is up on the download block. Release candidates are usually pretty close to the final version, though nervous Nellies might wanna hold back cause it's technically still trial software. Rewarding your balls of stainless steel is a 10 percent performance boost, Network Access Protection cribbed from Vista, black hole router detection and more. Like a fresh supply of "Nyah-nyah-nyah, XP's still better than Vista." Happily, it looks to be a single 336MB download, not the Groundhog Day-like series of install and restarts that was the Vista SP1 install process. [Microsoft, Features Overview (pdf)]
Microsoft's keeping XP running because they make as much money from XP sales as Vista sales. There's no real reason for them to do otherwise, other than the higher cost of defeating security threats in XP.
Is that a software OS thing or a hardware thing?
Hardware and software, and it remains an issue with any operating system that runs in 32-bit mode.
Processors running with a 32-bit wide architecture can only support processing integers of, at most, 32 bits. That means that the largest single integer they can 'think' about through a normal process is 4,294,967,295. This doesn't matter for most things: processors have extra 'floating point' components that can typically reach into the exobyte or further ranges, and memory makes it possible to strap integers together. But a few things can't be described with floating point values, and that's most notably memory access space.
There have been attempts to work around this, in both software and hardware.
AMDx64 and Intel's 86x64 systems have 64-bit wide architectures. Intel also has a component in some but not all processors call physical address extension, or PAE, which could in theory allow software to map to 64GiBs of memory.
But such hardware is only half of the solution. Programs have to have specialized versions created to run in those environments, whether you're talking 64-bit or with PAE. Trying to run these specialized programs in a x32 bit machine can cause blue screens or their Linux equivalent by trying to map to occupied or inaccessible memory, and becomes more common the more problematic the code.
Moreover, all of these solutions cause performance degradation in >3 gigabyte applications.
If they released a patch to upgrade systems to Windows to allow access to wider ranges of memory, it would be huge, bulky, cause performance loss, and reduce (or simply render inoperable) many computers without PAE/PSE-36/x64 support.
Right now, there isn't enough demand for this level of change. There aren't enough people who give a damn for software developers to even bother with x64 or PAE versions of their software, and since doing so often requires programmers to avoid using common tricks, it's not going to happen out of the warmness of their hearts. Without that, no reason for Microsoft to care.