check_boxは真偽値のカラム用になっているため、check_box_tagを使います。
check_box_tag(name, value = "1", checked = false, options = {})
配列で受け取るためのモデル名つきname属性を指定します
hidden要素は全てチェックなしでの更新をするために必要です
<%= form_for @user do |f| %>
<%= hidden_field_tag 'image[id][]' %>
<% @image.each do |i| %>
<%= check_box_tag 'image[id][]', i.id, checked = false, :id => "image_#{i.id}" %>
<% end %>
<% end %>
checkedの判定を反映させたい場合は、以下のようにやるといいらしいです
<%= check_box_tag 'image[id][]', i.id, @user.images.include?(i.id), :id => "image_#{i.id}" %>