Here is how I succeeded failed eventually succeeded in resizing a VMWare image:
Download VMWare Workstation for evaluation. For Ubuntu/Debian, download the rpm and convert it to a deb using 'alien'. Bizarrely, the install script changed permissions on my existing VMPlayer installation, which I had to put back. All the permissions of installed files seem to allow only root to run.
From the host machine, use the vmware-vdiskmanager command line tool to resize the disk file (with the VM fully shut down, of course). Something like:
sudo vmware-vdiskmanager mydisk.vmdk -x 4480Mb
(I wanted the result to fit on a DVD, and didn't need a very big VM. If future-proofing is more important, then maybe making it larger would be better.)
It changed the ownership and the permissions on the file for some reason — caused some worrying error messages!
Repartition the disk to make use of the increased space. I did this using the gparted LiveCD (created for this purpose). You have to edit the VMX file and add something like:
ide1:0.present = "TRUE" ide1:0.fileName = "~gparted-livecd-0.2.5-2.iso" ide1:0.deviceType = "cdrom-image" ide1:0.autodetect = "TRUE"
You have to remember to boot from this, not your hard disk, by pressing 'Esc' during boot.
GParted Live CD 0.3.1 did not work for me (it worked up to the point where it tried to start X). Version 0.2.5 worked fine. I think it's a change in graphics card detection -- I imagine the LiveCD has been tweaked to work better with real graphics cards, but not with virtual ones.
For NTFS partitions, this is much better that using the Windows tool 'DiskPart', which is only reliable for 'data volumes', not 'system volumes' (such as C:).
The result? VMPlayer refuses to boot the expanded Windows XP partition. How annoying. Something somehow got messed up. It might have been my .vmx file (which I restored from an old one), or it might have been some other .v*** files kicking around which I moved out of the way. It works now - yay!
A clever idea is to expand the disk to something really big, but make it a 'growable' type disk, and the size it takes up on your host machine is only the space that is actually required.