Po prostu użyj debuggera do sprawdzenia błędu. Załóż break point-y w kilku miejscach i uruchom program w trybie debug i zobacz w którym miejscu wyrzuca aplikację.
Równie dobrze te porównywania stringów mógłbyś wrzucić do tablicy stringów i sprawdzać czy tekst z comboBoxów jest w kolekcji zamiast rozbudowywać tak cały warunek. Np coś takiego:
int isvalid = 0;
string [] values= {"Cheese","Vegetable","Meat"};
for (int i = 0; i < ComboBoxes.Length; i++)
{
if (values.Contains(ComboBoxes[i].Text))
{
isvalid++;
}
else { ComboBoxes[i].Text = "Wrong input"; }
}
if (isvalid == 3)
{ return true; }
else { return false; }
Pisze to z głowy więc nie gwarantuje że wszystko będzie poprawnie :)
Zamiast pętli for mógłbyś również użyć pętli foreach wtedy od razu masz zapewnione sprawdzanie wielkości kolekcji.