Hiding Email Address Form Alter
You can use similar code as below to hide pass and mail field with optional value.

//drupal_set_message('not admin!');
$form['account']['current_pass']['#required'] = FALSE;  
$form['account']['current_pass']['#access'] = FALSE;
$form['account']['mail']['#required'] = FALSE;    
$form['account']['mail']['#access'] = FALSE;



$form['#validate'] = array_diff($form['#validate'], array('user_validate_current_pass'));
$form['#validate'] = array_diff($form['#validate'], array('user_validate_mail'));