Your code looks okay.
However... after some guessing and a couple of tests, there is one thing I can think of that would cause your form field to be ignored...
If you have a session variable with the same name as the form field, you'll get that instead of the form field, because with register_globals the session variables override the form submit variables.
print_r($_SESSION) right after session_start() and I think you'll find that is the source of your unchangable value.
If that is the case, use $_POST['email'] instead of $email. Better yet, turn register_globals off and code your site that way.
Yet another reason to not use register_globals.
[Edit]
If print_r($SESSION) doesn't reveal anything, try print_r($COOKIE) for the same reasons.