Try iterating over it this way.
for(int i = 0; i < list.Count(); i++){
if ((list[i] > 2) && (list[i] % 2 == 0)) {
list.RemoveAt(i);
i--; //as offsets have shifted by one due to removal
}
}
You are no longer iterating over the list. So this should work.