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>