Preheat oven to 350°. In a Dutch oven, heat butter over medium-high heat. Add onion and garlic; cook and stir until tender, 2-3 minutes. Stir in flour, white pepper and salt until blended; gradually whisk in milk. Bring to a boil, stirring constantly; cook and stir until thickened, 2 minutes.
Stir in 1 cup cheese. Reduce heat; cook until cheese is melted (sauce will be thick), 1-2 minutes. Remove from heat.
Add potatoes, ham and broccoli to sauce; stir gently to coat. Transfer to 8 greased 8-oz. ramekins.
Bake, covered, 40 minutes. Sprinkle with remaining cheese. Bake, uncovered, until potatoes are tender and cheese is melted, 20-25 minutes longer.
