Insert new user with form submit ‘init’ hook

The 404 page problem in the form field names. There is a list of public query variables that WordPress uses. If one of your form fields uses one on of those names, the result is not guaranteed.

The list is available somewhere in the Codex, but you can print the list in your page template file. Add this line near the top:

wp_die( '<pre>' . var_export( $wp->public_query_vars, true ) . '</pre>' );

$wp is a WordPress global variable. wp_die() should break your page and give you list similar to this:

array (
  0 => 'm',
  1 => 'p',
  2 => 'posts',
  3 => 'w',
  4 => 'cat',
  5 => 'withcomments',
  6 => 'withoutcomments',
  7 => 's',
  8 => 'search',
  9 => 'exact',
  10 => 'sentence',
  11 => 'calendar',
  12 => 'page',
  13 => 'paged',
  14 => 'more',
  15 => 'tb',
  16 => 'pb',
  17 => 'author',
  18 => 'order',
  19 => 'orderby',
  20 => 'year',
  21 => 'monthnum',
  22 => 'day',
  23 => 'hour',
  24 => 'minute',
  25 => 'second',
  26 => 'name',
  27 => 'category_name',
  28 => 'tag',
  29 => 'feed',
  30 => 'author_name',
  31 => 'static',
  32 => 'pagename',
  33 => 'page_id',
  34 => 'error',
  35 => 'comments_popup',
  36 => 'attachment',
  37 => 'attachment_id',
  38 => 'subpost',
  39 => 'subpost_id',
  40 => 'preview',
  41 => 'robots',
  42 => 'taxonomy',
  43 => 'term',
  44 => 'cpage',
  45 => 'post_type',
  46 => 'post_format',
)

Do not name any of your fields those names and you should get to your correct page.

For example, one of your fields is named name.

<label for="name">Your Name<span class="required">*</span></label>
<input type="text" name="name" id="name" class="required">

Item 26 indicates that this name will be hijacked by WordPress. Use something else:

<label for="user_name">Your Name<span class="required">*</span></label>
<input type="text" name="user_name" id="user_name" class="required">