A mi no me aparece ningún BSOD. He probado el programa compilando en modo Debug y Release, terminando el programa de forma normal, terminando de forma abrupta (usando el botón detener en VS), y cerrando Visual Studio. Cero pantallazos azules.
Según un comentario en el siguiente hilo, el cual casualmente es de un usuario que usa Windows 7 como tú, dicen que tras haber visualizado la información de depuración del volcado de memoria del BSOD, han llegado a la conclusión de que se trata de un bug de ese sistema operativo Windows 7...
De todas formas en la documentación de Microsoft explican que se trata de un fallo por parte de algún driver instalado en el sistema (un driver de dispositivos de red, supongo, o quizás incluso pueda ser culpa de algún driver o servicio en segundo plano de algún antivirus que puedas tener en ejecución mientras haces ping), y que ocurre cuando el driver no puede liberar páginas (páginas de memoria) bloqueadas despues de una operación de entrata y salida o input/output (I/O), es decir, de una operación de escritura y lectura de las páginas bloqueadas...
Hay te explican además una posible solución.
En caso de que no sea culpa de tu antivirus, yo te propongo otra posible solución: espera a que la operación de ping finalice antes de cerrar completamente el programa.
He revisado tu código y hay varias cosas imperfectas, desde el modo en el que posicionas el Form en la esquina de la barra de tareas mediante un búcle 
Do While (cuando lo puedes hacer con una simple operación matemática), hasta la implementación del 
BackgroundWorker que tira excepciones del tipo 
InvalidOperationException por intentar acceder a un control desde otro thread distinto desde el que fue creado. En fin, le hice algunas modificaciones y ha quedado de la siguiente manera; pruébalo a ver si con suerte te soluciona el problema en tu PC...
- Imports System.ComponentModel 
- Imports System.Threading 
-   
- Public NotInheritable Class Form1 
-   
-     Private ReadOnly Property HostNameOrAddress As String 
-         Get 
-             Return Me.TextBox2?.Text 
-         End Get 
-     End Property 
-   
-     Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load 
-         Dim scr As Screen = Screen.FromHandle(Me.Handle) 
-         Me.Location = New Point((scr.WorkingArea.Right - Me.Size.Width), (scr.WorkingArea.Bottom - Me.Size.Height)) 
-   
-         With Me.BackgroundWorker1 
-             .WorkerReportsProgress = True 
-             .WorkerSupportsCancellation = True 
-   
-             .RunWorkerAsync() 
-         End With 
-     End Sub 
-   
-     Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork 
-         Dim bgw As BackgroundWorker = DirectCast(sender, BackgroundWorker) 
-   
-         Do Until bgw.CancellationPending 
-             Dim elapsed As Double = Me.MedidorPing(Me.HostNameOrAddress, TimeSpan.FromSeconds(5)) 
-             Dim userState As String 
-             If (elapsed.Equals(Double.NaN)) Then 
-                 userState = "Ping request timed out." 
-             Else 
-                 userState = String.Format("{0:F0} ms", elapsed) 
-             End If 
-   
-             bgw.ReportProgress(Nothing, userState) 
-         Loop 
-         bgw.ReportProgress(100, Nothing) 
-     End Sub 
-   
-     Sub BackgroundWorker1_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged 
-         Me.TextBox3.Text = CStr(e.UserState) 
-     End Sub 
-   
-     Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted 
-         Me.Close() 
-     End Sub 
-   
-     Private Sub HexCheckBox1_CheckedChanged(ByVal sender As Object) Handles HexCheckBox1.CheckedChanged 
-         Me.TopMost = Me.HexCheckBox1.Checked 
-     End Sub 
-   
-     Private Sub HexButton1_Click(sender As Object, e As EventArgs) Handles HexButton1.Click 
-         DirectCast(sender, HexButton).Enabled = False 
-   
-         If (Me.BackgroundWorker1.IsBusy) Then 
-             Me.BackgroundWorker1.CancelAsync() 
-   
-             Do While Me.BackgroundWorker1.IsBusy 
-                 Application.DoEvents() 
-                 Thread.Sleep(TimeSpan.FromMilliseconds(100)) 
-             Loop 
-         End If 
-     End Sub 
-   
-     Private Function MedidorPing(ByVal hostNameOrAddress As String, timeout As TimeSpan) As Double 
-   
-         If String.IsNullOrEmpty(hostNameOrAddress) Then 
-             Return Double.NaN 
-         End If 
-   
-         If Not My.Computer.Network.IsAvailable() Then 
-             Return Double.NaN 
-         End If 
-   
-         Dim sw As New Stopwatch() 
-         Try 
-             sw.Start() 
-             My.Computer.Network.Ping(hostNameOrAddress, CInt(timeout.TotalMilliseconds)) 
-             sw.Stop() 
-             Return sw.Elapsed.TotalMilliseconds 
-   
-         Catch ex As Exception ' ArgumentNullException, InvalidOperationException, PingException or SocketException 
-             Return Double.NaN 
-   
-         End Try 
-   
-     End Function 
-   
- End Class 
-