I found a workaround by manually handling the errors array. It's a lot of code for one form field:
  <% to_contact_error_class = 
       @message.errors.messages[:to_contact_id] ? "error" : "" %>
  <div class="control-group string required <%= to_contact_error_class %>">
    <label class="string required control-label" for="message_to_constact">
      <abbr title="required">*</abbr>
      To contact
    </label>
    <div class="controls">
      <% to_contact_name = @message.to_contact ? 
            @message.to_contact.display_name : '' %>
      <%= autocomplete_field_tag "to_contact_name", '',
            autocomplete_contact_display_name_messages_path,
            :required => true,
            :id_element => "#to_contact_id",
            :class => "input-large",
            :value => to_contact_name %>
      <%= f.hidden_field :to_contact_id, :id => "to_contact_id" %>
      <span class="help-inline">
        <%= @message.errors.messages[:to_contact_id].join(", ") %> 
      </span>
    </div>
  </div>