Preheat the oven to 400 degrees F and arrange a rack on the bottom rim. Coat a 2-quart baking dish with butter and set aside. Bring a large pot of water, over low heat, to a simmer.
Melt 3 tablespoons butter in a medium frying pan over medium heat. When it foams, add the garlic, onions, salt, and black pepper. Cook until softened, about 5 minutes. Set aside to cool slightly.
Meanwhile, separate egg yolks and whites. In a large bowl, whisk the egg yolks, half-and-half and nutmeg together. Stir in the corn, cheese, and cooled onion mixture. Finally mix in the flour and combine well.
Beat the egg whites until they just hold onto the whisk, (soft peaks). Stir in about 1/3 of the whites into the batter, then gently fold in the rest of the whites. Turn the batter into the prepared dish and set inside a roasting pan or baking dish. Fill the pan halfway with simmering water and put in the oven. Bake until the pudding is golden brown and set in center, about 30 to 45 minutes. Serve warm.
BACK STORY: This is my take on my stepaunt's corn pudding. I added in Gruyere for nuttiness and onions for sweetness. The whole thing is lightened up by separating the eggs and folding in beaten egg whites.