Using an actual loop instead of goto is the first step.
The second step is to NOT use delay(). While you 'delay()', you can do nothing else. So, since you want to do something else (in this case, monitor for a button push), you have to eliminate all your delays.
Look at the blink without delay sample for the recommended method of doing this.
On a side note, I think it's a little absurd that the TVout library implements it's own method of delay(). Utterly pointless.