Well, the idea is to use the interrupts, both with Port Interrupt on Change and Timer.

On the first interrupt from your button, you start the timer. If you have multiple interrupts from the same button and the timer stil runs, just drop them.

If the timer interrupt occurs, and the button is still pressed, then you can confirm that is really pressed, setting a flag.

Hope this helps a little.

Ioannis