For drive cloning Norton Ghost, Acronis True Image and the mighty Linux disk dump are good solutions. If you want to use dd, read further:
Put the HDD to be cloned on IDE/SCSI channel 1.
Put the fresh HDD on IDE/SCSI channel 2.
Check HD jumper settings!
Get yourself a Linux bootdisk with dd included. Like here:
http://www.toms.net/rb/. Make a bootdisk and follow the instructions. Very easy.
Issue dd if=/dev/hda of=/dev/hdb for IDE drives
Issue dd if=/dev/sda of=/dev/sdb for SCSI drives
After a LONG time it will be finished. Pull out the "old" drive, place the new in position and reboot.
I use dd since many many years. It never has failed for me. Bad news is: it really dumps so if you dump 20 GB onto 40 GB HDD, you will only have 20 GB available and you have to repartition the HDD.