Let me cite myself:
I found that iTunes hates UTF-16 and that's what's the problem there.
targetMp3File = TagLib.File.Create(...);
// define picture
TagLib.Id3v2.AttachedPictureFrame pic = new TagLib.Id3v2.AttachedPictureFrame();
pic.TextEncoding = TagLib.StringType.Latin1;
pic.MimeType = System.Net.Mime.MediaTypeNames.Image.Jpeg;
pic.Type = TagLib.PictureType.FrontCover;
pic.Data = TagLib.ByteVector.FromPath(...);
// save picture to file
targetMp3File.Tag.Pictures = new TagLib.IPicture[1] { pic };
targetMp3File.Save();
So essentially the whole thing is in the pic.TextEncoding
line. Additionally i assigned the Mime Type through the .NET constant.
Source: Having trouble writing ArtWork with Taglib-sharp 2.0.4.0 in .Net
This should work for both iTunes and iPod/iPad/iPhone. BUT this works only for MP3 files...