Не знаю, действительно ли это проблема, но вы не избавляетесь от изображений, которые вы рисуете на растровом изображении. Это помогает?
Dim gbkn As Bitmap = New Bitmap(7001, 7001, Imaging.PixelFormat.Format32bppArgb)
Dim g As Graphics = Graphics.FromImage(CType(gbkn, Image))
Dim img As Image = Image.FromFile("C:\background.png")
g.DrawImage(img, New Point(0, 0))
img.Dipose()
img As Image = Image.FromFile("C:\firstlayer.png")
g.DrawImage(img, New Point(0, 0))
img.Dispose()
img As Image = Image.FromFile("C:\secondlayer.png")
g.DrawImage(Image.FromFile("C:\secondlayer.png"), New Point(0, 0))
img.Dispose()
Я серьезно сомневаюсь, что это как-то связано с изображениями, так как я работал с изображениями в 2-3 раза больше этого размера без этой проблемы. Кроме того, исключение OutOfMemoryError представляется одной из чрезвычайно полезных ошибок, которые выдает GDI, которые часто не имеют ничего общего с памятью.