What I imagined though was more in terms of stopping the recognition itself if it goes for too long.
Ah, I actually encounter that issue every so often myself; There's no real "fix" for it that I know of.
I played around with the "{STATE_SPEECHACTIVE" token in a loop, but while it's possible to detect speech longer than 3 seconds, there's no way to stop the speech engine(within VoiceAttack at least).
Even if there were, using a timer like this would be problematic, as command phrases can be any length.
The minimum volume limit is an option, but that's not something that's built into the speech recognition engine as far as I'm aware, and modifying only the sound going into the engine without also affecting any other applications that use the microphone would be difficult.