We are creating a media item then saving it, the value of the reference field gets set as a GUID and not as a media item, i.e., <image mediaid="{655F48CF-5F8B-4232-98D6-0DA0E288F9C2}" />
We are referencing "virtual SitecoreMediaItem { get; set; }" and the SitecoreMediaItem has been posted here before:
//Template - /sitecore/templates/System/Media/Unversioned/Jpeg
[SitecoreType(AutoMap = true, TemplateId = "{DAF085E8-602E-43A6-8299-038FF171349F}")]
public class SitecoreMediaItem
{
[SitecoreField("Mime Type")]
public virtual string MimeType { get; set; }
[SitecoreField("__Icon")]
public virtual string Icon { get; set; }
public virtual Guid Id { get; set; }
public virtual string Name { get; set; }
public virtual Stream Blob { get; set; }
public virtual string Extension { get; set; }
public virtual int Size { get; set; }
//keep adding other field that you want to copy here
}