Sometimes you have no option but to install Windows on a separate partition rather than running it in a VM. One of the main reasons would be when you need Windows to access external devices and speed is a of crucial importance.
I began by carving off a piece of my Ubuntu install (using gparted) so that I would have room to create a new NTFS partition for Win7. After booting into the Win7 installation, selecting Custom Install and selecting my newly created partition my install would always fail at the end with "Windows could not prepare the computer to boot into the next phase of installation". Excellent why would this go smoothly? Well Windows needs a separate boot partition, if you do a clean install with no other partitions on the harddrive Windows will create it for you. Since we have Ubuntu already installed, we must create our own partition for Win7 to reside along with a separate boot partition. Why Microsoft does not document this is beyond me.
Back in gparted I created a 200MB NTFS partition and a 60GB NTFS partition. Win7 install must have liked this because I did not recieve the “could not prepare...” error and the install completed successfully.
A Windows install is going to wipe out grub2 so dont be alarmed, its not a big deal you can re-install it, just follow step two from this blog posting. http://ubuntuguide.net/how-to-restore-grub-2-after-reinstalling-windows-xpvistawin7
Essentially what you are going to do is boot into Ubuntu Live (make sure you have a copy handy) and re-install grub. After grub is re-installed, reboot.
Oh no! Now we can’t get back into Win7! It may seem the battle between Win7 and Ubuntu will not end but you are almost there! Once you are logged back into Ubuntu, open your terminal and run update-grub. This will re-build grub.cfg, if all goes well you should see a print out that your Win7 install was found and added to grub.cfg. Next time you reboot you will see your Win7 install in the grub menu.