I don't quite understand why you would choose to use two loops to do something that I gave you a perfectly good solution to that uses a single loop:
VB Code:
  1. Dim ctl As Control
  2.  
  3. For i As Integer = Me.Controls.Count - 1 To 0 Step -1
  4.     ctl = Me.Controls(i)
  5.  
  6.     If TypeOf ctl Is PictureBox AndAlso ctl.Name <> "pbPreview1" AndAlso ctl.Name <> "pbPrevTes" Then
  7.         DirectCast(ctl, PictureBox).Image.Dispose()
  8.         Me.Controls.Remove(ctl)
  9.     End If
  10. Next i
Setting the Image property of the PictureBoxes being removed does nothing useful. You only need to cast the Control to a PictureBox in order to access its Image property once to Dispose it. I also suggest using the IO.File.Delete method instead of Kill.