I don't think it's a code issue because the actual device that Windows sees is not the 328, it's the FTDI chip; although there's a chance that the FTDI chip is being very picky and waiting for a handshake from the 328 before appearing to the host. What happens if you (carefully) remove the 328 from its socket and then plug in the USB?
If you have any other Uno boards, try swapping the 328 and see if it works on the other one. Make sure you're using the drivers that came with the Arduino environment download. Try it on another computer as well.
EDIT: I'd also suggest rebooting Windows. I've seen it do funky unexplainable things that went away with a simple reboot.
EDIT 2: Are you using a USB hub? If so, is it powered externally? If not, there's a chance that the Uno isn't getting enough power to start up.