Registering User Programatically with only Email Address
In your custom submit function you can do the following,

$email_entered = $form_state['values']['email'];

$query = db_select('users', 'u');
$query-&gt;fields('u', array('uid'));
$query-&gt;condition('u.email', $email_entered);
$row_count = $q-&gt;countQuery()-&gt;execute()-&gt;fetchField();

if ($row_count == 0) {
  // User doesn't exist, Save the user.
  $parts = explode("@", $email_entered);
  $account = new stdClass;
  $account-&gt;is_new = TRUE;
  $account-&gt;name = $parts[0];
  $account-&gt;pass = user_hash_password('bar');
  $account-&gt;mail = $email_entered;
  $account-&gt;init = $email_entered;
  $account-&gt;status = TRUE;
  $account-&gt;roles = array(DRUPAL_AUTHENTICATED_RID =&gt; TRUE);
  $account-&gt;timezone = variable_get('date_default_timezone', '');
  user_save($account);
} 
else {
  // User exists.
}


As you can see there is no way that you can get the name of the user so you have to use the email as the username. This will be stored in users.name field. 
You also might want to mail the password to the user.