So far what I can achieve is the image file size same as the usage for the virtual machine, for example, if you partition your c drive as 50GB and you have used 40GB then your file size should not get more than 40GB. If you image file size is larger than that then you can do the following.
1. Do a Disk Cleanup in your drive.
2. Do a defragment by issuing the command defrag c: /u /v in command prompt (assuming the drive is c).
4. Run sdelete -z in command prompt. DO NOT run sdelete -c.
If you are run sdelete using -c like this article mentioned, https://blogs.oracle.com/virtualbox/entry/how_to_compact_your_virtual, then your disk size will epand to the maximum.
5. Shutdown your virtual machine.
6. Run VBoxManage.exe YourImageName.vdi –compact in command prompt (for example, your image name is YourImageName.vdi).
Your disk size should be good by now.