Position a rack in the center of the oven and heat the oven to 350°F.
Put the grits, milk, 3/4 tsp. salt, and 3 cups water in a 2-quart saucepan, cover, and bring to a boil over medium-high heat. Lower the heat to medium and cook, uncovered, stirring frequently, until some of the water has been absorbed but the mixture is still very soupy, 5 to 7 minutes. Reduce the heat to low, cover, and cook, stirring every 2 minutes, until creamy, soft, and just slightly soupy (it should fall easily from a spoon), 8 to 10 minutes. Turn off the heat, add the cheese and ham to the grits and stir until thoroughly combined. Season to taste with black pepper.
In a large bowl, whisk the egg yolks until pale yellow. Pour 1 cup of the grits into the yolks, whisking constantly. When the mixture is smooth, add the remaining grits to the bowl and whisk thoroughly until evenly combined.
In another large bowl, beat the egg whites to stiff peaks with an electric mixer. Using a large serving spoon, gently fold the egg whites a third at a time into the grits mixture just until the whites are blended in.
Butter a 3-quart baking dish and pour the grits mixture into it. Bake until the spoonbread is puffed and lightly browned, about 30 minutes. Remove from the oven and let stand 10 to 15 minutes before serving (it will deflate).