You can use any type of loop for any purpose but each type is best suited to certain situations a Do While loop is a poor choice in this case. The best option in this case is to use a For loop and count backwards:

For i = ListBox1.Items.Count - 1 To 0 Step -1
If String.IsNullOrEmpty(CStr(ListBox1.Items(i))) Then
ListBox1.Items.RemoveAt(i)
End If
Next