If both can be powered on at the same time, you can image across the network. The only requirement is that the destination is larger than the source. Boot both machine up from live CDs (almost any will do), and get them on the network. Assuming the disk is /dev/sda, and the destination address is 192.168.0.3 run the following.
Destination : nc -l -p 1025 | gzip -d | dd of=/dev/sda
Source : dd if=/dev/sda | gzip | nc 192.168.0.3 1025
Netcat (nc) is a simple program to transfer data across the network. The Destination command tells netcat to listen on port 1025, decompresses the output with gzip, and then passes it to dd, which then writes it to /dev/sda. The source command reads /dev/sda, gzips it, and then sends it to the destination address on port 1025. The destination command should be run first.
Make the VM with a small disk (say, 20GB), and it shouldn't take too long over a fast connection. You can then expand the partition on the other side using gparted.