for setting the session variables, don't use:
ValidatedField("checkoutstep1","postcode")
use:
(isset($_POST['postcode'])?$_POST['postcode']:"")
Validated field is only to be used when fields are not validated. Really that means just to temporarily populate the form after failed validation. Anything else should refer to the form directly.