Thoroughly grease a 13 x 9 inch baking dish with 2 tablespoons of butter.
In a large skillet over medium heat, sauté shallots in the remaining 2 tablespoons of butter until softened and translucent, about 5 minutes. Season with salt and pepper. Add the spinach and remove the skillet from the heat. Stir the spinach into the cooked shallots for a minute or two until it has become wilted. Set the shallot and spinach mixture aside.
Spread roughly one third of the bread cubes in the bottom of the greased baking dish. Sprinkle over about one third of the spinach and shallot mixture, one third of the ham, and one third of each cheese. Then repeat this layering process twice more with the remainder of the spinach and shallot mixture, ham, and both cheeses.
In a large bowl, whisk together the eggs, dijon mustard, 1 teaspoon of salt, ½ teaspoon of pepper, nutmeg, and half & half until very well blended.
Pour the egg mixture evenly over the layered ingredients in the baking dish. Using a large spoon or silicone spatula, gently press down on the surface to ensure that all of the bread begins to absorb the egg mixture.
Cover the dish tightly and place the strata in the refrigerator for a minimum of 8 hours and up to 16. (Overnight is ideal.)
When ready to bake, remove the strata from the refrigerator and let it stand at room temperature for 30 minutes. In the meantime, heat the oven to 350℉.
Bake the strata, uncovered, until it is puffed, golden brown, and cooked through, about 45 to 55 minutes.
Let stand for 10 minutes before serving.