O que estou fazendo aqui é sequestrar os erros do formulário para que eles não sejam exibidos na caixa de mensagens drupal típica e eu possa exibi-los ao lado de cada campo conforme desejado.
//Hijack our errors so they don't display normally.
$errors = form_get_errors();
//Only rebuild form if there are actually errors that we need to display
if( !empty($errors) ) {
$form_state['errors'] = $errors;
$form_state['rebuild'] = TRUE;
}
// Remove all error messages
drupal_get_messages('error');
// Get the array of errors and reset them
$errors = &drupal_static("form_set_error", array());
// Make sure that each error should be applied to the field
foreach (array_keys($errors) as $field) {
unset($errors[$field]);
}