Just to confirm that GusGan's approach works just fine for XP, at least.
I managed to clone a physical machine to VirtualBox with the help of TrueImage, but found 10GB was far more than I really needed once I had cleared out a load of unneeded applications.
So after closing down, I unhooked the 10GB image from its VM and attached it as a first slave to an XP VM on which TrueImage is installed, and then created and attached a 6GB vdi as a second slave.
I then used TrueImage to clone the contents of the 1st slave "down" to the 2nd slave.
"Powered down", unhooked the 6GB from the XP VM and attached it to the previously 10GB VM. Done!
I would think the same technique ought to work for a Linux vdi. It's also possible other imaging/partitioning programs could be used. Ranish, perhaps?
Oddly, TrueImage wouldn't "restore" directly from a .tib image on a USB drive attached to a VM. However, I restored from the .tib to a normal partition on the same drive (on a physical XP setup), after which TrueImage happily cloned from the restored partition to a .vdi.
A word of warning - cloning from a physical machine is not necessarily straightforward: I had to remove some drivers (AGP and processor), and do a repair install.