How Can I Force A Loop Restart

You can create a variation of the delay() function, using millis().

unsigned long waitStart = millis();
unsigned long waitTime = 1000000;
while(millis() - waitStart < waitTime && digitalRead(buttonPin2) == HIGH)
{
   // Don't do a thing
}

This while loop will complete after 1000 seconds OR when the switch connected to the pin is pressed.

It is easy enough to change the while condition, or to add an if statement before it. The if statement could start the while loop, which could end when the switch is pressed again, or when it is released.

If you define exactly what should cause the long wait to start, and what should cause the long wait to stop, we can help you get the code right.