In the past, I did this by putting the new drive into the old computer as a secondary, formatting the new drive with the /s switch (to make it bootable), and then manually copying everything from one drive to the other (ignore hiberfile and pagefile), and you might need to copy 1 or two windows files (if they are locked) from a command prompt. Then you put the new drive back into the new computer.
IF and when XP boots up on the new drive, it will find all the hardware has changed and you then let it install new drivers. You should have the drivers on CD/DVD or the HD BEFORE this process starts, because you may not have network access or even USB support. Then you are done.
If you get a blue screen stop error on reboot with the new drive in the new computer (from the windows install using the old computer's drivers for IDE/SATA chipset usually), then you boot from a WinXP install disc, picking the SECOND "R" option: you want to install on the existing partition, into the existing windows directory. Once the process is done, you should have a functioning install with the same user profile(s) and all programs and shortcuts should be there and it "just works."
I personally recommend migrating the user data to the Vista install instead of doing this process, but I have done this the way I describe above a number of times without losses. If it all goes bad, you will still have the old disk as a complete backup of the data.