I think the problem is with your form tag missing enctype="multipart/form-data"
so try changing:
<form method="post" action="">
to:
<form method="post" action="" enctype="multipart/form-data">
and as a side note, if you want to redirect to the newly created post change:
wp_redirect( 'http://domain.com' );
to:
wp_redirect( get_permalink($post_id));
exit();
Update:
From the comments i understand that want the image to show inside the content, well that is a different thing but not that hard,
change:
if ($attach_id > 0){
//and if you want to set that image as Post then use:
update_post_meta($post_id,'_thumbnail_id',$attach_id);
}
to:
if ($attach_id > 0){
$post = get_post($post_id,'ARRAY_A');
$image = wp_get_attachment_image_src( $attach_id );
$image_tag = '<img src="'.$image[0].'" width="'.$image[1].'" height="'.$image[2].'" />';
//add image above the content
$post['post_content'] = $image_tag . $post['post_content'];
//add image under the content
//$post['post_content'] = $post['post_content'] . $image_tag;
$post_id = wp_update_post( $post );
}