It generaly seems that people - Connect GPIO 0 to GND (button press) then connect RESET to GND (button press) - then relese RESET - then relese GPIO 0.
If you use the above order of events and GPIO 0 has been set as an output and is high at the time you conect GPIO 0 to GND the output wil be damaged (for some reason the damage leaves the pin always high when used as an output). Booting still works ok when the pin is an input (default) but you cant use it as an output.
I always - press RESET - press GPIO 0 - relese RESET - relese GPIO 0. Then this can't happen.