Well that's a cool project! I want one!
The simple way of speeding up the detection of button presses would be to exit from your inner loops when you detect a toggle.
Something like (using this loop as an example):
for (unsigned char n = LCD_VISIBLE_X_RES; n > 0; n--){
drawLine(n,Lcd_TOP,PIXEL_OFF);
drawLine(n,signal[abs(LCD_VISIBLE_X_RES-n)], PIXEL_ON);
if (toggled) return; // give up, they pressed the switch
}
That will take you out of "loop", you get thrown back in, you notice the toggle, you change modes, etc.
Or this:
for (unsigned char n = LCD_VISIBLE_X_RES; n > 0 && !toggled; n--){
drawLine(n,Lcd_TOP,PIXEL_OFF);
drawLine(n,signal[abs(LCD_VISIBLE_X_RES-n)], PIXEL_ON);
}