Let me show you the problems with your question. There are several unanswered questions that arrive from a simple state machine table. (The following assumes a debounced PB.)
- OFF STATE: On entry to this state, turn off the power to the MCU. If the PB is unpressed, continue in this state. If the PB is pressed, then start a 3-second timer and go to step 2. (Regardless of its prior state, it must be reset so that 3 seconds will elapse -- so this means that if there is a hardware timer and if for some reason that hardware timer is still timing away, you MUST be able to reset it the moment the PB is pressed.)
- TIMER PENDING: If the timer is still busy and the PB is still pressed, then continue in this state. If the PB is released, go to step 1. If the PB is still held, but the timer expires, then go to step 3.
- PB PENDING: If the PB is still held but the timer is on for some reason, there is an error in the timer -- go to step 2 and re-await the timer (or else choose some other behavior.) If the PB is not held but the timer is on, then there is an error in the timer -- go to step 1 and re-await the PB to restart the process (or else choose some other behavior.) Otherwise if the PB is still held, continue in this state. And if the PB is released, then go to step 4.
- ON STATE: On entry to this state, turn on the power to the MCU. If the PB is unpressed, continue in this state. If the PB is pressed, then start a 3-second timer and go to step 5. (Regardless of its prior state, it must be reset so that 3 seconds will elapse -- so this means that if there is a hardware timer and if for some reason that hardware timer is still timing away, you MUST be able to reset it the moment the PB is pressed.)
- TIMER PENDING: If the timer is still busy and the PB is still pressed, then continue in this state. If the PB is released, go to step 4. If the PB is still held, but the timer expires, then go to step 6.
- PB PENDING: If the PB is still held but the timer is on for some reason, there is an error in the timer -- go to step 5 and re-await the timer (or else choose some other behavior.) If the PB is not held but the timer is on, then there is an error in the timer -- go to step 4 and re-await the PB to restart the process (or else choose some other behavior.) Otherwise if the PB is still held, continue in this state. And if the PB is released, then go to step 1.
This is not so complicated for a PIC10F200. In fact, it's relatively trivial to perform. (It still will require an external driver circuit to handle the required current, obviously.)
However, this is quite a bit more complex to do in analog hardware. There exist components such as the 74121 that can be used to represent your 3-second timing component(s). You will also need something to keep track of the power-on state (some form of FF.) And also something to keep track of the current state and some added logic to make the state transitions.
That said, you might make some "don't care" decisions to help simplify the hardware logic involved. But you haven't specified what to do in the error conditions mentioned above (and you must decide what you can accept in those cases, because they might occur.)
An MCU requires a toolchain, learning curve, and some coding. That's a process by itself and I don't want to tell you that this is the better way. That's something you have to decide.
But I can say that the hardware logic won't be trivial, either. I see analog debouncing, a short term reliable delay as well as a 3-second delay timer (or two), one or more FF, and a variety of logic gates. And you would need to carefully specify all of the details. Look over the above logic and tell me exactly how you'd want to carefully describe the exact behaviors of this circuit.
I'd go with the SOT-23-6 MCU.