Thanks for your suggestions! I checked all of the values in the binding source when the first cell was not in edit mode and then compared it to all values when the cell was in edit mode. Unfortunately they were exactly the same.
I still don't really know what is causing this to happen, however I know that the count only increments when I select the next row while in edit mode on a cell in the current row. So my solution was on DataGridView_CellLeave to do a bit of:
Private Sub DataGridView_CellLeave(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView.CellLeave
If Me.DataGridView.Rows(e.RowIndex).Cells(e.ColumnIndex).IsInEditMode Then
Me.DataGridView.EndEdit()
End If
End Sub
And this seems to have stopped it from happening. If anyone is able to shed any light on this I'd still love to hear it, but for now, this will do.