Preheat oven to 375 degrees F (190 degrees C). Lightly grease a medium baking dish.
To prepare the cheese sauce, melt butter in a medium saucepan over medium heat. Whisk in flour, garlic powder, salt, and pepper. Mix in milk, and stir constantly until thickened. Mix in Cheddar cheese and Swiss cheese, and continue to stir until smooth. Reduce heat to low.
Layer potatoes in the bottom of the prepared baking dish. Layer onion and ham over potatoes. Top with cauliflower. Cover with the cheese sauce.
Bake covered 1 hour in the preheated oven. Remove cover, sprinkle with crushed cornflakes, and continue baking 10 minutes, until vegetables are tender and surface is bubbly and lightly browned. Allow to cool about 10 minutes before serving.