There is a DOS command called xcopy when used with a number of other command parameters can do what you want. I've done it before to copy Win98 to another drive, but never done it before to this extent in XP. I do use this in a batch file I use to backup certain directories/files to another drive, but haven't tried it to bootable/system file in XP yet. Also I should mention I've only used it on FAT32 partitions.
I guess the worst that could happen is the new drive wont boot as you want. Then just reformat and try using some other software.
Probably the best solution I can think of is to use something like Norton Ghostto create a drive image and plop in onto the other drive.
Anyway, here are the steps for using XCOPY:
1: Keep your bootable drive where it is.
2: Set the new drive as slave, old bootable drive as master.
3: Fdisk & format your new drive making sure there is enough room in the target partition for all your files
4: Boot into windows normally and see if the new drive is viewable in explorer (it should be).
5: Get to a command prompt and type:
xcopy [source drive letter]c:\. [destination drive letter]:\ /e/c/h/r/k
so, lets say you were copying c:\ to d:\, the command would look like:
xcopy c:\. d:\ /e/c/h/r/k
Those DOS switches mean the following:
/e=copies ALL folders (even empty) and all subdirectories
/c=continues to copy on error (such as when copying windows swap file)
/h=copies hidden/system files
/r=overwrites read-only files
/k=preserves file atributes
EDITED: Oh yeah, don't forget to make the new drive's partition active (bootable) when done. And don't gorget to re-adjust your master/slave settings.