En realidad ese código que puso Kyha funciona, sólo que en ese evento no o al menos no para lo que tu esperas ya que al seleccionar una fila obviamente se seleccionará esta y se perderá la selección de la anterior.
Lo que podrías hacer es guardar en un arreglo el índice que se ha seleccionado y ante una nueva selección de fila establecer la propiedad selected en True, algo así:
Código vb.net:
Ver original'Variable visible para toda la clase
Dim filas_sel As New List(Of Integer)
'Método para seleccionar una fila
Private Sub seleccionarFila(ByVal indice As Int32)
Me.dgvdatos.Rows(indice).Selected = True
End Sub
'Evento CellContentClick
For i As Int32 = 0 To Me.filas_sel.Count - 1
Me.seleccionarFila(Me.filas_sel(i))
Next
If e.ColumnIndex = 2 Then
Me.filas_sel.Add(e.RowIndex)
End If
Antes de comprobar si se ha hecho click sobre la columna de índice 2 (es la que yo tengo como checkbox) recorro una lista
filas_sel (declarada al inicio de la clase) que tiene el índice de las filas seleccionadas hasta el momento.
Luego se comprueba que la fila seleccionada sea la que tiene el checkbox y se guarda en el arreglo el índice de la fila para que se mantenga seleccionada.
Espero te sirva.
PD:Según tu aplicación creo que puedes manejarlo de una mejor manera, pero como primera idea creo que puede ayudarte en algo