Can anyone recommend a cheap/free utility that can do this without very much effort?
My preference is that it would be really easy.
DriveImage XML  will do the job. It runs from within Windows and it can copy directly from drive to drive. A lot of people rave about it after good experiences with the software.
DriveImage XML is an easy to use and reliable program for imaging and backing up partitions and logical drives.
Image creation uses Microsoft's Volume Shadow Services (VSS), allowing you to create safe "hot images" even from drives currently in use. Images are stored in XML files, allowing you to process them with 3rd party tools. Never again be stuck with a useless backup! Restore images to drives without having to reboot. DriveImage XML is now faster than ever, offering two different compression levels.
EASEUS Disk Copy  is a great alternative if you don't want to go for a 'hot' backup that runs from within Windows. Good review at lifehacker  and on a par with DriveImage XML. They quite clearly state that it is ideal for moving from one disk to a larger one. Like other suggestions, this requires that you create a boot CD.
EASEUS Disk Copy is a potent freeware providing sector-by-sector disk/partition clone regardless of your operating system, file systems and partition scheme by creating a bootable CD. The sector-by-sector method assures you a copy 100% identical to the original. Disk Copy can be used for copy, cloning, or upgrading your original small hard drive to a new larger drive. Simply speaking, it can copy anything from the old hard drive including the deleted, lost files and inaccessible data. So, the freeware is a perfect tool for Data Recovery Wizard to recover files from a backup disk.
GParted  on the Ubuntu (and I'm sure other Linux distros) Live CD will do exactly this. I've used it to successfully migrate entire operating systems from one dying drive to another new drive.
GParted is a free partition editor for graphically managing your disk partitions.
GParted is useful for tasks such as: creating space for new operating systems, restructuring disk space to separate user and operating system data, and copying partitions to enable upgrading to a larger hard disk drive.
You could try out Clonezilla Live .
Clonezilla, based on DRBL, Partclone and udpcast, allows you to do bare metal backup and recovery. Two types of Clonezilla are available, Clonezilla live and Clonezilla SE (server edition). Clonezilla live is suitable for single machine backup and restore.
It doesn't perfectly meet your requirements, but the disk to disk clone instructions are here . http://clonezilla.org/clonezilla-live.php
Although fsarchiver  is quite an underrated allround (offline) non-gui Linux tool (from the creators of PartImage that iirc doesn't support Ext4), I agree that DriveImage XML is the best answer so far. But also try MiniTool Partition Wizard Home Edition . Next time. ;)
Here's a summary of tools for partition cloning I have used in the past:
( for offline cloning, for online cloning) http://www.fsarchiver.org/Main_Page
My easiest way is to put in a booting NetBSD or Linux CD, boot, and tell it to
dd if=/dev/hda of=/dev/hdb
I then shutdown, unplug the first drive, and reboot. Just as my easiest way may not seem easy to you, I guarantee you that all these other easiest ways don't seem like it to me. The important thing here is:
Now granted, this copies only the exact same partition map; if you want something different, you need to ask.
I have personally used Acronis True Image  Home Edition, upgraded that to Home Edition 2009.
Acronis True Image Home 2011 assures that all your important data, including photos, videos, music, documents and applications, are fully protected and can be recovered quickly in the event of any disaster.
Have NEVER had a failure, never had a gotcha. Now however, as mentioned above, you can get it for FREE by downloading Seagate Disk Wizard, from their website. It's the same as Acronis, but with Seagate's name on in, obviously because they paid a fee for that. http://www.acronis.com/homecomputing/products/trueimage/
Partimage can do it, but it's all command line stuff. this link should help you with doing that. http://www.partimage.org/Partimage-manual%5FBackup-partition-table
My preference is that it would be really easy. Boot into Vista. Pick drive to move, pick target drive, copies everything over, and reboots to correct partition.
if you mean the newly cloned drive by "correct partition", then this cannot be done automatically. you'll have to clone the drive and then set it in the BIOS as primary boot device or (if the BIOS doesn't provide this option) connect the drive to the primary controller.
furthermore, you're looking for 'hot imaging' of a 'live operating system' which is not recommended (unless absolutely necessary), too many things can go wrong.
for further reference, you may want to read this:
RADIFIED - Guide to Norton Ghost  presents what many consider the ultimate back-up strategy. It is based on features found in Ghost, a hard drive imaging/cloning software program developed by Symantec. Altho designed around Ghost (considered the most reliable application of its kind), the strategies presented here (such as performing a test-restore, to ensure your back-up image will work when you really need it) can be applied to any disk cloning program.. After nearly 9 years on the 'Net - and countless updates - it is still the site's most requested Windows tutorial. Users of Ghost from all over the world contribute regularly to the insights it contains, which might be why its popularity continues to grow. When you realize how much time & misery Ghost's supernatural disaster recovery features can save you.
as outlined, many of these practices and tips can applied to other disk cloning programs, in case you have other preferences than Ghost. i will not tell you to which program to use because there are many available that are equally as good (Ghost, Drive Snapshot and DIXML are just very easy to integrate into BartPE) but Radified's is (by a far cry) the best tutorial on drive cloning i have ever come accross. this may not be the 'easiest method' but data security in general and drive cloning in particular is too serious to be taken lightly. even if you get lucky and don't need the backup, you definitely want it to be reliable and ready to be applied at a moments notice (should the faeces ever hit the paddles :). http://ghost.radified.com/
+1 for GParted. I needed to migrate XP from a 60G drive to a 320G drive. Here's what I did:
Paragon Software's Drive Backup 9.0 Free Edition , a very complete backup/restore product. http://www.paragon-software.com/home/db-express/
Disclaimer: I'm a developer for Macrium Reflect  at the time of writing.
Our software will allow you to take images of disks of all sorts, including Windows boot disks, EFI disks, GPT disks etc. For example, at the time of writing I have broken a VM I've been running (quite badly, the partition type has disappeared!):
This is a single disk XP-install; however, we can also restore Windows 7 systems.
I could sit here and and be all marketing-y, but I'm no good at it. Here's how we shape up against your requirements.
We have a free edition which should be able to do most of what you need - however, we also offer paid-for editions with more advanced features. The free edition download page  offers the usual comparison table. http://www.macrium.com
If you have Seagate drives you can use Seagate Disk Wizard  which is the Acronis True Image licensed to Seagate. I have Seagate drives so I use this a lot and I like it. I'm able to do fairly quick backups and restoring is rather quick too. It's completely free as long as you are using a Seagate drive.
I've used Clonezilla ; I use the LiveCD do a backup of my computer and then go ahead and mess around. It's free but the UI can be intimidating as it's pretty much not existant but does a great job. I haven't used it for Vista but I'm sure it can work. http://www.seagate.com/ww/v/index.jsp?locale=en-US&name=DiscWizard&vgnextoid=d9fd4a3cdde5c010VgnVCM100000dd04090aRCRD
I've used the free Paragon Drive Backup  a couple of times with great success. Basically you plug the new drive in, clone your old hard drive, then replace the old drive with the new one. http://www.paragon-software.com/home/db-express/
Cloning a live system in never a good idea, no matter what people say to you. Using shadow copies and other workarounds is never as good as plain old sector-by-sector copy and this is exactly what you want if you would like to clone partitions to another disk. Go for a solution that boots from CD or USB, so that your system is offline.
Others have already mentioned Clonezilla. It is a powerful freeware tool, running from live CD. I'm using it in business environment for a number of years. It is linux based, so it can be a bit confusing if you're not familiar with linux.
I have only second hand knowledge about EASEUS Disk Copy, but I hear it is simple and highly efficient. My first choice is still Clonezilla as it helped me many times, but if Linux is not your thing, go for Disk Copy. And remember, avoid cloning system with Windows running.
In Mac OS X I'd use Carbon Copy Cloner . The "new" HDD will be bootable and everything. http://www.bombich.com/software/ccc.html
Long time Ghost user here. First started using it as a Desktop Support monkey at Duke Medical Center. Never had a problem. You do have to play with it a bit to get your whole methodology down. Even the older versions of Ghost out perform most of the tools available today.
I successfully used the free version of HD Clone  to move to my new hard drive.
It was simple enough, runs from within Windows, no need for Live CD. Does auto-expand to the larger partition.
Not much to tell, actually. It just worked. http://www.miray.de/products/sat.hdclone.html
Load a linux LiveCD (I use Linux Mint 9 because it's a stable long term release).
Open the terminal from the menu.
sudo apt-get install fsarchiver
If you need to partition the hard drive using gparted
Backup the MBR:
dd if=/dev/sda of=/[locationofmbrfile]/backup.mbr bs=512 count=1
/dev/sda refers to the first hard disk, the rest just copies the first 512 bytes (containing the mbr) to a file.
Back up the filesystem:
fsarchiver savefs /[locationtosavebackup]/backup.fsa /dev/sda1
This backs up the first partition on the first hard drive to a file called backup.fsa. If you're trying to backup to an external hard drive, you Mint should auto-mount it under the /media folder. So the path to the external hard drive would be something like /media/[harddrivename]/backup.fsa
For the rest of the steps we'll assume that the new hard drive is also attached to the system. Check to see what device the second hard drive is assigned to using gparted (ex sda, sdb, sdc, etc...). We'll assume that it's the second hard disk attached or sdb.
Copy the MBR over:
dd if=/[locationofmbrfile]/backup.mbr of=/dev/sdb bs=512 count=1
Copy the partition over:
fsarchiver restfs /[locationtosavebackup]/backup.fsa id=0,dest=/dev/sdb1
This is pretty much the reverse of the backup steps except the device changed to sdb because the changes are being applied to the second hard disk.
If you're not afraid of the command line, doing backups using linux is a cakewalk. The advantage of using fsarchiver is, it does file-based backups instead of data block backups like clonezilla or partimage. That means that it's possible do a restore on a partition that is smaller than the one that was originally backed up (as long as the data size doesn't exceed the size). That essentially
If you want a GUI-only solution:
This is essentially the linux equivalent to the DriveXML mentioned in one of the other answers except it can be run from a cd (ie doesn't require a working system).
Note: If the destination drive is smaller than the source drive you may not be able to do the copy.