The link from GermanTux is correct, if not a little sparse and with possible typographic errors...
Try these steps:
**First, on the Windows guest:1) Clean up the drive. Remove any un-needed, temporary, extraneous, etc files. Empty the Trash. Generally get rid of as much as you can (and are comfortable with). The space in use as reported by Windows will be your goal.
2) De-frag the (virtual) drive. It doesn't hurt to run it few time (it will continue to compact the files a little better each time). You don't need to run it an
excessive (+5) number of times.

3) Download sdelete (you can get it here:
http://download.sysinternals.com/Files/SDelete.zip)
4) from a command (or DOS) prompt in Windows, run the sdelete program as follows:
sdelete -c c:
This will "zero-out" all the deleted (and, hence, un-used) files/space on you Windows install, allowing the next steps to proceed
5) Shut down (
not Hibernate) Windows.
**Second, on the PCLinuxOS host:6) From a console (command prompt) run the following:
VBoxManage modifyhd /full/path/to/.VirtualBox/HardDisks/Windows.vdi --compact
--Replace "/full/path/to/.VirtualBox/HardDisks/Windows.vdi" with the proper path and filename for your Windows virtual disk.
After this is done running, the size of your .vdi should be much closer to the size Windows reported as in use.
If you don't want to change your original HD (good for copies, backups, etc), replace "modifyhd" with "clonehd", and supply and output file.
VBoxManage
by itself will print out all its options.