My way of doing this:
Install windows on the new machine or just hdd.
Boot from that new hdd and copy the entire old C: disk to a temporary folder on the new hdd.
Boot from the old hdd, backup the root directory files and rename windows, my documents, settings, program files folders on the new hdd (don't delete them yet in case something goes wrong and you have to boot from the new hdd again).
Move the copied C: hdd files to the root folder on that new hdd.
Boot from the new HDD, install new hardware drivers.
Done.
---
My Win XP installation on my main PC is several years old and survived about 5 computers/disks.
Of course you can also use some 1 to 1 exact copy disk ghosting software, but from my experience some of them are real PITA to use (slowwwwwwwwww if your disk is really big).