Heat 3 tablespoons butter in a 2-quart saucepan over medium-high heat. Add the flour and cook, whisking, until smooth, about 1 minute. Whisk in the milk and bring to a boil. Reduce the heat to medium-low and let simmer until slightly reduced and thickened, 6 to 8 minutes. Add 1/2 cup grated gruyere and the Parmesan and whisk until smooth. Season with salt, pepper and nutmeg.
Preheat the broiler. Place 6 slices of bread on a baking sheet and spread 1 tablespoon of the mustard over each. Top with 2 slices ham and half of the remaining gruyere. Broil until the cheese begins to melt, about 1 1/2 minutes. Top with the remaining 6 bread slices, and then pour a generous amount of bechamel on top of each sandwich and sprinkle with the remaining gruyere and Parmesan. Broil until the cheese sauce is bubbling and evenly browned, 2 to 3 minutes.
Meanwhile, melt 2 tablespoons butter in a nonstick skillet over medium heat. Add 3 eggs, sprinkle with salt and pepper and cook until the whites are cooked but the yolks are still runny. Repeat with the remaining butter and eggs.