I'll try to help with this, although the biggest image on my machine is a 2800x1400 .jpg (2mb). I've not worked much with .tif images and have never worked with images used in mapping. There are however a few things you can try (if you haven't already) to work with blocks from a larger image.
First, isolate your working image from the original. To do this, create an empty bitmap of the same physical dimensions as the disk image. Create a graphics object from that empty image. Next, load the original from disk and draw it in the previously-created graphics object. Then dispose of the copy of the original you just loaded, so there is no link between your program and the disk image.
From the image you've just created (call it the "working image"), create yet another image from a rectangular section of the working image. This would be the block you wish to process in some way. Perform the desired changes on this new image, and then draw it back to the working image (using the graphics object again).
Once all desired changes are made, you can then overwrite the original or write it out to a new file. The code below demonstrates the steps to get the copy of the original and then get a block selection from that copy. Once you've made your changes, you can use a similar process to write the block back to your working image, and then write the working image back to disk. You shouldn't run into any memory errors this way.
Dim original As Bitmap = Bitmap.FromFile("bigimage.tif")
Dim workingImage As New Bitmap(original.Width, original.Height)
Dim g As Graphics = Graphics.FromImage(workingImage)
g.DrawImage(original, 0, 0, original.Width, original.Height)
original.Dispose()
Dim block As New Bitmap(300, 300)
Dim selRect As New Rectangle(100, 100, 300, 300)
Dim drawRect As New Rectangle(0, 0, 300, 300)
Dim blockGraphics As Graphics = Graphics.FromImage(block)
blockGraphics.DrawImage(workingImage, drawRect, selRect, GraphicsUnit.Pixel)