Die Abfrage erfolgt bei dir so zu spät, da erst der Parameter
dataGridView6.Rows[i].Cells[j].Value evaluiert wird und darauf dann die
ToString-Methode angewendet wird - und diese führt eben bei einem
null-Objekt zu der
NullReferenceException.
Das ist einer der Gründe warum ich selber die verschachtelten Zugriffe innerhalb einer Zeile versuche zu vermeiden.
Besser dann auf mehrere Zeilen (bzw. Variablen) aufteilen, um explizite Abfragen durchführen zu können. Oder aber, wie auch in deinem Fall, um nicht mehrmals den Gesamtausdruck innerhalb der Schleife berechnen zu lassen!
Trifft zwar jetzt nicht genau diesen Fall (da du ja selber nicht die Klasse
DataGridView erstellt hast

), es gibt das
Gesetz von Demeter (Law of Demeter) als Software Design Pattern.