For the "power button" solution: keep in mind you need to give just a relatively short impulse, otherwise most PCs would perform a complete and unconditional power-off (as opposed to ACPI signaling Windows is time to shut down, or do whatever it wants with the event). You can probably do it with a capacitor and some resistor and a diode, maybe a transistor.
I like this solution because you don't need extra software (but you COULD in theory do anything software with the event). Anything else would take quite a bit programming and especially testing.