In short, this is not a fault, this is a power saving feature of modern processors. Intel calls it Speedstep, AMD call it PowerNow!.
Basically when your processor is not working particularly hard it will "clock down" (or underclock if you prefer) itself in order to save power and produce less heat. When you need it to work hard it then returns to full speed as necessary. This transition is near instantaneous and if it is doing its job properly you should not really notice your system being "slow" due to the low clock speed or transitions between speed.
Newer Intel (i3, i5, i7) and AMD processors now have an extension to this whereby the processor can actually self-overclock if it is safe to do so within thermal or power limits. Intel's version of this is Turbo Boost. The idea behind this is that power is saved by keeping the processor at a higher clock rate but for a shorter time before returning to idle, the more time spent at idle the better the power savings.
The reason you might not be seeing this in XP is possibly because it requires support from the operation system and chip set drivers, if you have old drivers or have not enabled a power plan that attempts to save power then you will not see the CPU underclocking, the "desktop" or "performance" (I can't remember the name) power profile does not all CPU enable power saving features if I remember correctly.
Windows 7 enables this power saving mode by default as the delay for speed switching is imperceptible, Windows XP may need you to change to a "mobile" power profile in order to see the CPU frequency change.
As per the Wikipedia page for SpeedStep which confirms that you may need to change the power profile in order to enable CPU SpeedStep to underclock the processor:
Under Microsoft Windows XP, SpeedStep support is built into the power management console under the control panel. In Windows XP a user can regulate processor speed indirectly by changing power schemes. The "Home/Office Desk" setting disables SpeedStep, the "Portable/Laptop" power scheme enables SpeedStep, and the "Max Battery" uses SpeedStep to slow the processor to minimal power levels as the battery weakens. The SpeedStep settings for power schemes, either built-in or custom, cannot be modified from the control panel's GUI, but can be modified using the POWERCFG.EXE command-line utility.