Se me ocurre una forma de hacer lo que quieres, tal vez te sirva.
Voy a suponer que usas un pulsador de los típicos diseñados para tal fin (digo, perilla roja y con retención, ¿me explico?).
En principio usaría un pin para poder manejar el reset (luego vemos como conectarlo). Se podría usar el watchdog timer pero no funciona en todas las placas, depende del bootloader que venga cargado.
En el setup(), luego de inicializar todo pero antes de inicializar las interrupciones verificaría el estado del pulsador.
Si está pulsado imprimiría algo como "Emergencia, libere pulsador" o lo que sea conveniente. Y luego entraría a un while() hasta que se libere el pulsador.
Eso detendría la ejecución en tanto el pulsador de emergencia esté retenido.
Luego seguiría la inicialización de la interrupción y lo que quedase pendiente.
Cuando se dispara la interrupción (se pulsó el botón), haces la secuencia que ya tienes, muestras en el display lo que creas conveniente si hace falta, le das un tiempo de retardo para que se lea ese mensaje (recuerda que no se puede usar delay() ) y finalmente pones en bajo el pin que maneja el reset.
Se resetea el arduino pero al encontrar que el pulsador sigue pulsado, ahí queda en espera de que se libere, como expliqué antes.
Respecto a la conexión entre el pin y el reset, tengo algo en mente con una resistencia y un capacitor pero prefiero buscar información para confirmarlo antes.
Fíjate si te sirve y avanzamos.
Saludos
PD: Antes que "me salten a la yugular" aclaro que sé perfectamente que teóricamente una interrupción debe ser lo más corta posible pero este es un caso excepcional en que hay que hacer un "parate" abrupto del programa y realizar determinadas maniobras de cierre entonces ya no importa lo que la interrupción dure.