How to improve this Power ON/OFF circuit?
I think this can be done with just a couple of diodes and a resistor.


Pressing the button with power off enables PWR_ENABLE turning on the micro (or power supply or whatever).  The micro asserts POWER_HOLD to keep the power on.  The micro then monitors PWR_DOWN_REQUEST to see when the user has pressed the button again.  If VBATT is above the level that can be fed into an input of the micro, a voltage divider can be added.