This article shows how you can use a simple, ultra low current pushbutton, an LED and a few I/O lines to implement pushbutton power switch for an Arduino.
Simply press the pushbutton for a few seconds and the Arduino will power on and run code. Then, push and hold the pushbutton until the LED illuminates and then release the button to switch power off.
Wayne made this project video:
wholder has shared the board on OSH Park: