I use Linux as the OS for my cabinet for many reasons - I believe it's better suited to an 'embedded' application like this as it can be extensively customised and stripped down, it's free, easy for remote administration and updating by ftp and ssh etc. I'm a fan of Debian as for most packages it's very easy to just apt-get to install and upgrade, and I currently run Sarge, which is the latest stable distribution.
Running on top of this is AdvanceMenu as a frontend to the emulators, which are currently AdvanceMame, zsnes and Stepmania. AdvanceMame is a special version of MAME that is designed to drive arcade monitors using standard PC graphics cards. Finding a card that works well in practice can be a bit tricky, and I tried several different types before I got satisfactory results, but eventually I had great sucess with a Matrox G400 driving my TV in RGB mode. The great thing about the G400 driver is that you can pass Modeline paramters to the kernel at boot time, which means it can switch to 15khz mode immediately (of course the Matrox driver has to be compiled into the kernel). This is useful as the standard 31khz VGA output can damage an arcade monitor (or RGB TV), and normally other steps would need to be taken to avoid feeding the video into the monitor until 15khz mode is enabled which usually would be after the OS has fully booted and the userspace application starts. At the moment you just see the normal Linux boot messages on the screen, but eventually I would like to use a boot logo using bootsplash or similar.
The power button on my cabinet is a normal arcade button wired to the computer motherboard where the case power switch would normally go. For a long time this operated by simply switching the power to the computer off when the button was pressed. This is a bit dodgey as it could potentially cause hard drive corruption if any disk writes take place as the power switches off, although I never experienced any problems with this. However to avoid any problems, I recompiled my kernel with ACPI support and installed the acpid Debian package. The OS then captures the power button event, and initiates a graceful system shutdown and switches the power off. I modified the computer PSU to incorporate a relay in series with the mains pass-through socket, with the relay coil powered from the 5V rail. With the monitor, amplifier and marquee light connected to the pass-through socket via a 4-gang adapter, pressing the power button switches everything on, and pressing it again shuts the computer down then everything automatically powers off!