Form fields getting cleared off of user inputs after validation errors
I reckon using the ternary conditional operator to check if there is anything in $form_state['values'] would get there, i.e. something like:

$default_value = 'Test Default Value';

$form['test'] = array(
  '#type' =&gt; 'textfield',
  '#default_value' =&gt; !empty($form_state['values']['test'])?$form_state['values']['test']:$default_value,
);