Preheat oven to 375 degrees F (190 degrees C). Lightly grease a medium baking dish.
To prepare 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 and Swiss cheese; continue to stir until smooth.
Reduce heat to low. Layer potatoes in the bottom of prepared baking dish. Layer onion and ham over potatoes. Top with cauliflower.
Cover with cheese sauce.
Bake covered 1 hour in preheated oven.
Remove cover, sprinkle with crushed cornflakes, and continue baking 10 minutes, until vegetables are tender surface is bubbly and lightly browned.
Allow to cool 10 minutes before serving.