I was having the same problem.
Your solution is GRATE! But the problem is that you javascript IS NOT cross browser, so in some browsers the code will not work, and the user will get stuck, as the JS will not "copy" the content from email_field and "paste" it on the other two (name and user_name), as the form validator is expecting the user to complete every field, but we hide and left empty some textbox.
To fix this we can use jquery that solve this for us, with only this code instead:
<script type="text/javascript">
var $j = jQuery.noConflict(); //avoid conflict with other libraries
$j('#username_field').change(function () {
var reg_user = $j('#username_field').val(); //set username value inside variable
$j('#name_field').val(reg_user); //assign variable value to name
});
</script>
Note that im leaving user_name visible, and making name = user_name. Make necessary changes to fit your needs.
Also, this code should be AFTER the html table, otherwise it will not work.