I know this is an old post, but i am trying to do this myself. However, no matter what I do, the geotiff is not loading properly into a GIS app (ArcGIS Pro). I know the modeltiepoint values are being written to the file, as i am able to read them back in with System.Drawing.Imaging.PropertyItem.
Do you have any sample code that shows exactly what you did with the tiePoints (as you mention in your pseudo-code)? Also, do you need to set a projection anywhere?
I have seen and used the info here: http://geotiff.maptools.org/spec/geotiff2.6.html , but still no luck.
//Populate the modelTilePoint array
// modelTilePoint[0] = someValue;
//...