How to implement a soft power switch controllable by microcontroller?
This example uses a Maxim MAX1835 step-up regulator, but could be applied to others as well that have a shutdown pin.

The circuit is normally powered down.  When the user presses the pushbutton, the battery is fed into the -SHDN pin, enabling the regulator and turning on the 3.3V to the microcontroller.  The microcontroller then puts a logic 1 on the POWER ON lead, holding the power on after the user releases the pushbutton.  When the microcontroller wants to shut itself off, it sets the POWER ON lead to 0.