I was always under the impression that the reason you couldn't undo was purely to encourage putting thought into your votes, instead of clicking after the first sentence, getting through the rest of the post, and looking to take your upvote back.
Guess I was wrong. I'd say 30 seconds should be enough, with this thought in mind =]
The main use case for the unvote button is for mobile, and on a spotty mobile connection it might take a lot longer than 30 seconds until the action registered.
Sometimes I'll vote on a comment, and then as I'm reading the replies and clarifications, or other comments elsewhere in the discussion, I'll realize I misunderstood something and will want to go back and change my vote.
Guess I was wrong. I'd say 30 seconds should be enough, with this thought in mind =]