Why do things the hard way?
Is your computer new enough to support large HDs such as the one you plan to buy? If yes, then just format the new drive as you please. If no, then create a small partition at the start for the 'boot' directory and format the rest, taking care in the instructions below; you can copy everything as described except for the contents of '/boot' - they need to be copied to your special small partition.
1. mount the new disk - say at /mnt
2. copy the following directories (as 'root', to preserve permissions etc) using the "archive" option: cp -a
-- /lib (and lib64 if you have it)
Then check your original system and see if there are a few other special files to copy, like 'vmlinuz', 'initrd' and other such in the top directory.
3. Create the following directories on the new HD:
Check and create any other special directories specific to your distro.
Make sure the permissions/owner are all the same as the original.
Now, what goes into the /dev directory depends ... on many modern systems with udev, the directory simply has to exist; it is actually built from scratch as the initrd startup scripts run, but the directory needs to exist so that it can be used as a mount point. On older systems, you'd actually need to make a copy of the /dev directory using 'cp -a' as in step 2.
4. Set up the bootloader. Personally I find 'lilo' easier to set up in this case, but that's just because I never had time to really look at Grub.
5. Reboot and hope it all works.
Otherwise, Live CD + chroot + fix up the bootloader and try again.