Heat olive oil in a large skillet over medium-high heat. Add sausage and cook, breaking it up with a spoon, until browned and cooked through, about 8 minutes. Transfer to a plate.
In the same skillet, add mushrooms and onion. Cook until mushrooms release their liquid and become golden brown, about 10 minutes. Add garlic and cook for 1 minute more.
Grease a 9x13-inch baking dish. Spread bread cubes in the bottom, then top with sausage, mushroom mixture, and both cheeses.
In a large bowl, whisk together eggs, milk, Italian seasoning, salt, and pepper. Pour evenly over the casserole.
Press down gently with a spatula to ensure everything is moistened. Cover with foil and refrigerate overnight.
The next morning, preheat oven to 350°F and let casserole sit at room temperature for 15 minutes.
Bake covered for 30 minutes, then remove foil and bake for an additional 10-15 minutes until golden and set.
Cool for 5 minutes before serving.