In a heavy-bottomed medium saucepan, melt butter over medium heat. Add onion and sauté, stirring frequently, for 3 minutes.
Add corn and continue to sauté for 3 minutes.
Add milk, water, and 1 teaspoon salt. Turn heat to high and bring to a boil.
When mixture boils, gradually whisk in the grits. If you mix them in too fast, they will clump.
Turn heat down to low and simmer, whisking every now and then, for 40-50 minutes. (The amount of times it takes to cook the grits will vary according to the brand. It is best to go by the cooking time on the package. Some will only take 20-30 minutes. Others can take up to 60 minutes.)
Stir in butter, both cheeses, and salt and pepper to taste.
Add a few dashes of Tabasco sauce and green onions.
Notes
I like really thick grits, but you can always thin with additional milk.