The only obvious problem I see is that you forgot to turn interrupts back on at the end of 'timer_off()'. That would not cause the timer to keep running. Are you sure the button is working?
You code requires an external pull-up resistor on pin 8 for your button. Do you have one installed? A more common method is one side of the button to a pin and the other side of the button to ground and declare that pin as INPUT_PULLUP. This will make the pin HIGH when not pressed or LOW when pressed.
Besides the other issues mentioned, I don't like that if the button is held down for more than half a second it repeats. Much better to write loop like this: