Melt butter in a medium saucepan over medium heat. Add flour and whisk to combine. Cook for 1 minute. Slowly pour in milk, while whisking constantly to prevent lumps. Cook sauce, whisking occasionally, until it begins to thicken, about 5 minutes.
Add 1/2 cup cheese to the sauce, and whisk until melted. Add salt, pepper, nutmeg, and mustard; whisk to combine. Turn heat to low and keep sauce warm.
Place half of the cubed bread in the bottom of the prepared baking dish, in an even layer. Top bread with half the ham and half the remaining cheese. Pour half the sauce evenly over the bread layer.
Top sauce with remaining bread in an even layer. Top bread with remaining ham and sauce. Use a spatula to spread sauce over the casserole. Sprinkle top of casserole with remaining cheese.
Use a spoon (or your fingers) to create 4 to 6 divots in the top of the casserole. Crack each egg and place one in each divot. This will help keep the yolks from touching the sides of the baking dish.
Cover loosely with tin foil and bake for 20 minutes. Carefully remove tin foil and check to see if egg whites are done. If not, return casserole to the oven and bake for another 3 to 5 minutes until whites have set. (If you like your egg yolks over hard, leave the foil off the entire time.
Remove from the oven and serve warm, cutting casserole so each serving has an egg on top.
Notes
If you don't care for baked eggs, leave the eggs out and call it a Croque Monsieur Breakfast Casserole instead!