When WordWrap is True, the Lines() array will return every line as you see it in the control, so a "wrapped" line is getting treated as a new line.
Try splitting on the line feed character and calculate the positions yourself:
Dim lines() As String = RichTextBox1.Text.Split(vbLf)
Dim startIndex As Integer = 0
For i As Integer = 0 To lines.Length - 1
RichTextBox1.Select(startIndex, lines(i).Length)
If lines(i).StartsWith("You:") Then
RichTextBox1.SelectionColor = Color.Red
Else
RichTextBox1.SelectionColor = Color.Green
End If
startIndex += lines(i).Length + vbLf.Length
Next