I have a 64-bit machine that has Windows 7 32-bit and Ubuntu 32-bit installed as a dual boot setup. Can I run 64-bit software on top of these 32-bit OSes, or are they a "bottleneck" limiting the true capability of the underlying hardware?
Your Operating System is your interface to the underlying hardware. Applications in modern operating systems have no direct access to the hardware and can only use it through system calls through the kernel.
So if your kernel (OS) only supports 32bit operations, applications using 64bit will not work.
Regarding virtual machines, your hardware doesn't have to be 64bit to simulate a 64bit environment inside a 32bit OS. There is an example of an 8bit AVR microcontroller running a 32bit linux kernel using an emulator. Whatever the emulation takes up a lot of time, thus the aprox 24Mhz of that chips get reduces down to something in the kilohertz range (10kHz actually).
So, yeah running 64bit software inside a 32bit OS (inside a VM) on whatever hardware will apply a bottleneck. Better install a 64bit OS if you have the hardware.