Recently, I needed to expand the hard drive on my Ubuntu VirtualBox guest machine from 8GB to 20GB.  At first it looked like I was going to have to start from scratch, but a little Googling turned up this gem (which I stole from the VirtualBox forums)
#VBoxManage createhd -filename new.vdi --size 20000 --remember
#VBoxManage clonehd old.vdi new.vdi --existing
After the clone operation gets finished you just need to replace the old hard drive with the new on in VirtualBox and start the guest instance.  The only thing that tripped me up is that the guest didn't immediately "see" the bigger hard drive.  Well, to be more precise the hard drive was bigger but the partition was still set to 8GB.  As quick boot into GParted did the trick and now I have room to move again on my VM.  :)