Using the deepest sleep mode is probably the easiest solution: The current consumption is often insignificant.
A simple, but not the best solution is connecting the button the the reset pin: When the button gets pressed, the microcontroller resets ans starts the program. When it is done, it goes into the sleep mode.
Many microcontroller also support wake up from an external interrupt pin. That is a better solution than using the reset pin, because it ignores additional button presses.
If you want a true power down, you could use a transistor in the power rail, turned on when the button is pressed. In addition to the button the microcontroller also controls the transistor and keeps it on until it is done.