You aren't actually doing any form validation when they submit the voucher, so that is why it doesn't work.
You could add code to manually save the values as if you had done validation... try adding this around line 19 on the page:
<?php
if((((isset($_POST["txtPromoCode"]))?$_POST["txtPromoCode"]:"") != "")) {
SaveFormToSession("", "confirmcart");
}
?>