Right, I was mulling this over (in the bath!) last night and realised that I'd overcomplicated the whole thing. Below is an ultra-simple solution that works in much the same way as the others, but with less code.

First, create a movie clip and add the following code in its Object Actions:

Code:
onClipEvent (load) {
    clicked = 0;
}
Now, inside the clip create your button and add the following code to its actions:

Code:
on (release) {
    mydate = new Date();
    if (clicked == 0) {
        start = mydate.getTime();
        clicked = 1;
        return;
    }
    stop = mydate.getTime();
    if (stop - start > 300) {
        start = mydate.getTime();
    } else {
        trace ("clicked");
        clicked = 0;
    }
}
Which is, I think, about as simple as you can get. Any problems, drop me a line.