Here is the code I've been using.. I would LOVE to give props to the source, but I don't remember what it is 
You feed it the DWG path and it returns a Bitmap image (if found) BMP for 2012 and earier, PNG for 2013 and later
Imports System.IO
Function GetBitmap(fileName As String) As Bitmap
Using fs As New FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
Using br As New BinaryReader(fs)
fs.Seek(&HD, SeekOrigin.Begin)
fs.Seek(&H14 + br.ReadInt32(), SeekOrigin.Begin)
Dim bytCnt As Byte = br.ReadByte()
If bytCnt <= 1 Then
Return Nothing
End If
Dim imageHeaderStart As Integer
Dim imageHeaderSize As Integer
Dim imageCode As Byte
For i As Short = 1 To bytCnt
imageCode = br.ReadByte()
imageHeaderStart = br.ReadInt32()
imageHeaderSize = br.ReadInt32()
If imageCode = 2 Then ' BMP Preview (2012 file format)
' BITMAPINFOHEADER (40 bytes)
br.ReadBytes(&HE)
'biSize, biWidth, biHeight, biPlanes
Dim biBitCount As UShort = br.ReadUInt16()
br.ReadBytes(4)
'biCompression
Dim biSizeImage As UInteger = br.ReadUInt32()
'br.ReadBytes(0x10); //biXPelsPerMeter, biYPelsPerMeter, biClrUsed, biClrImportant
'-----------------------------------------------------
fs.Seek(imageHeaderStart, SeekOrigin.Begin)
Dim bitmapBuffer As Byte() = br.ReadBytes(imageHeaderSize)
Dim colorTableSize As UInteger = CUInt(Math.Truncate(If((biBitCount < 9), 4 * Math.Pow(2, biBitCount), 0)))
Using ms As New MemoryStream()
Using bw As New BinaryWriter(ms)
bw.Write(CUShort(&H4D42))
bw.Write(54UI + colorTableSize + biSizeImage)
bw.Write(New UShort())
bw.Write(New UShort())
bw.Write(54UI + colorTableSize)
bw.Write(bitmapBuffer)
Return New Bitmap(ms)
End Using
End Using
ElseIf imageCode = 6 Then ' PNG Preview (2013 file format)
fs.Seek(imageHeaderStart, SeekOrigin.Begin)
Using ms As New MemoryStream
fs.CopyTo(ms, imageHeaderStart)
Dim img = Image.FromStream(ms)
Return img
End Using
ElseIf imageCode = 3 Then
Return Nothing
End If
Next
End Using
End Using
Return Nothing
End Function