01 - Preheat oven to 350°F. Grease a 9x13 inch baking dish with unsalted butter.
02 - In a large skillet over medium heat, cook the sausage, breaking it apart until fully browned, about 6 to 8 minutes. Transfer the cooked sausage to a plate, reserving 1 tablespoon of fat in the skillet.
03 - Add diced onion and bell pepper to the skillet. Sauté until softened, about 4 to 5 minutes. Stir in spinach and cook until wilted, 1 to 2 minutes. Remove from heat.
04 - In a large mixing bowl, whisk together eggs, whole milk, heavy cream, salt, black pepper, garlic powder, and dried thyme until well blended.
05 - Layer half of the bread cubes evenly in the prepared baking dish. Top with half of the cooked sausage, half of the sautéed vegetables, and half of the shredded cheeses. Repeat the layering with the remaining bread, sausage, vegetables, and cheeses.
06 - Pour the egg mixture evenly over the layered ingredients, pressing gently to ensure the bread absorbs the liquid.
07 - Cover the dish with foil and refrigerate for at least 30 minutes, or overnight for optimal flavor and texture.
08 - Bake the covered casserole for 30 minutes in the preheated oven.
09 - Remove the foil and continue baking for an additional 20 minutes, until the center is set and the top is golden brown.
10 - Allow to rest for 10 minutes before slicing and serving.