You could probably do this using variables and conditional branches methinks.
Don't ask me how exactly, it's just a hunch....especially if you plan on making custom attacks anyway. (I'm using the default ones out of laziness xD)
Each Time the move is used set a variable to + 1
Each time that variable reaches a certain number use force action to make the player use an identical move that does more damage/has different sound effects etc. Don't forget to reset the variable being checked to 0!
For the proper button timing, you could always have a timer of sorts (don't ask me how to do this! X_X ) and a conditional branch check for if the player has pressed an action key. if the player presses it with the proper timing the attack is force actioned to be replaced by an identically named attack with different sounds etc, if not then nothing is done.
It's certainly a 'dirty' and noobish way to do it, but if you could pull it off...
I have no clue how you would set that sort of thing up, so you might have to ask a scripter, especially someone who knows events.