This is possible, but hard and/or painful... Its so easy in linux and still so hard on windows!
You have to prepare the windows BEFORE the migration, you have to install scsi/sata drivers of the new computer and sometimes change the current drivers to a generic one (if the current driver is not from MS or weird controlers). Note that RAID setup are very hard to clone, unless they use the same controller.
Windows XP required one to load a registry file to allow one to do this:
And delete all HD to drive letter mapping in the
HKLM\SYSTEM\MountedDevices before shuting down (well, not all drivers are required, just the boot one, but if you remove all, you can map the drive letters back later, so no big problem)
With windows 7, you should just need to install the new drivers and if needed, boot in safe mode on the new setup. If you forgot to install the new driver, try this howto
The easy way might be to use the sysprep to put the windows in to a state ready for cloning. Sysprep will prepare the system and to keep all data choose the option System Out-of-Box-Experience and Generalize (to load all generic controllers drivers)
Please note that on first boot you have to create a account, create something just to continue, but later you can login with the old one (and remove the new created account)
Finally you can also try to use acronis backup/restore , that claims that can do this.
Also, if you download HirensCD (google for a download link), you can have a LiveCD with windows and do some changes (like change the registry, copy files, install some drivers, fix the MBR and boot menus, etc ) that might help for those that didn't prepare the system BEFORE the change.