An update on Win32:
Hector architected the libfreenect code so that the usb library could be abstracted out. Libusb works on Linux and OS X but Windows requires libusb-win32, which uses an older API but mostly works. I investigated adding the libusb-win32 implementation to libfreenect. I was able to get the depth working decently but video was really buggy. I determined that to make this approach work well it would require diverging significantly from the rest of the libfreenect core.
Rather than do that, we decided to use Zephod's code (accidental API) that he contributed because it already solved the same problems and it works really really well. Zephod's code is written in C++ but has a C wrapper to make it implement the libfreenect.h header. This means the core codebase for Windows will be different than libfreenect but applications can still use the same API across the three platforms.
If a future release of libusb supports Windows properly then we could look at having a single codebase across the platforms but at this point it isn't feasible.
At this point I have moved the Zephod code around to the appropriate place and updated the C wrapper to have the latest libfreenect.h. I still need to implement a few of the methods that are missing in the core C++ module. As soon as this is done we should be able to add it to mainline.
Anyone who wants to see the latest code can check the zeph-win32 branch on my fork:
Thanks for everyone's help and patience!
Josh