El fallo lo tienes en esta comprobación:
If contador_fil > 3 Then
contador_fil = 1
pos_y = pos_y + 200
End If
Si el contador es mayor que tres, tu cambias el valor a 1 y sumas la variable pos_y,
por lo tanto el valor de pos_y siempre será el mismo en todos los ciclos del búcle porque "contador_fil" siempre será "1", así que la comprobación donde sumas el valor de "pos_y" nunca se vuelve a comprobar/sumar...
Fíjate como así sí que funciona:
Dim pos_x As Integer = 0
Dim pos_y As Integer = 0
Dim contador_fil As Integer = 4
For j = 0 To 5 ' i - 1
Dim pcb As New Button
pcb.Height = 150
pcb.Width = 150
If contador_fil > 3 Then pos_y += 200
If contador_fil = 1 Then : pos_x = 0
ElseIf contador_fil = 2 Then : pos_x = 200
ElseIf contador_fil = 3 Then : pos_x = 400
End If
MsgBox(pos_y)
pcb.Location = New Point(pos_x, pos_y)
Me.Controls.Add(pcb)
Next
Saludos.