[userpic] is showing up in your $_POST array. For the code/form you posted, that is impossible. Either your form, your browser, or your web server/php is not processing the type="file" input field correctly.
I just went back and tested your form with both FF and IE and it submits the expected $_FILES array, so there is not a problem with the html.
Is there a chance that an earlier version of the code had a type="input" and somehow a cached version of that is getting used? Clear your browser cache and see what happens. Try a different browser if you have one available.
Basically, something with your browser or server/php is causing this.