Change the error message "An illegal choice has been detected. Please contact the site administrator."
This is to add onto Letharion's answer. Using the same principle, we can also check for error messages to replace in the validator.

function MY_MODULE_form_validate($form, &amp;$form_state){
    $errors = drupal_get_messages(); // (dpm()'s has to go AFTER this line--they get cleared)
    foreach ($errors as $type =&gt; $id) {
        foreach ($id as $message){
            // Loop through individual messages, looking for ones to remove or replace
            if (test_for_invalid_error($message)===FALSE){
                drupal_set_message($message,$type);
            } elseif (test_for_invalid_error($message)!==TRUE){
                drupal_set_message(test_for_invalid_error($message), $type);
            }
        }
    }
}

function test_for_invalid_error($message){
    if (strpos($message, 'An illegal choice has been detected. Please contact the site administrator.') !== false) {
        return t('Please select a category!');
    }
    return FALSE;
}


This will not only add your own custom error, but replace the "An illegal choice" error. Isn't it neat? Yay!