ljcox said:
When the PIC wants to turn the power off, it sets this output high.
The solution works when the PIC knows when to turn off the power. But one must enable the PIC brown-out protection while the PIC is shutting down.
If user wants to turn off the power at any time then first the PIC must monitor the state of the push button and sensed it is pressed by the user. Your configuration bypassed the push button to Vss and make sensing difficult.
I assumed that there is some other trigger other than the push button that tells the PIC when to turn off. Certainly, if you want to use the push button to trigger the switch off then extra logic is required. For example, another i/o could be configured as an input to monitor the state of the button. A second pair of contacts on the push button is not necessary.