Slice the bread into roughly 1.5 to 2 cm (0.6 to 0.8 inches) cubes, place it into a large bowl, and set aside. Combine all the cheeses together in a separate bowl.
Heat a frypan over medium to high heat, then add the bacon and cook, stirring, until it releases some fat. Add the onion and garlic and continue to cook for 2 minutes, stirring often, making sure the garlic does not burn. Set aside and allow to cool slightly.
Reserve 1/4 cup of the cooked bacon and 1/2 cup of the cheese for the topping. Once the bacon has cooled completely, place the reserved bacon and cheese into separate bowls, cover with plastic wrap, and refrigerate until needed.
In a bowl, whisk the eggs, milk, and salt until well combined. Add the cheese and bacon mixture, then stir to combine. Pour the egg mixture over the bread and mix well, making sure all the bread pieces are evenly soaked.
Cover the bread mixture with cling or plastic wrap, gently pressing it down to level the surface to stop the bread from drying out. Refrigerate overnight, or for at least 2 hours, to allow the liquid to fully soak into the bread.
Preheat the oven to 200°C (390°F).
Generously grease a 20 cm / 8 inch round tin (non stick with a loose base) with butter. To prevent any leakage during baking, you may wish to wrap the outside base of the tin with foil.
Transfer the strata mixture into the prepared tin and press down gently using a flat spatula. Sprinkle the reserved cheese and bacon evenly over the top. Cover the tin loosely with foil and bake for 45 to 50 minutes, or until a skewer inserted into the centre comes out clean.
Remove the foil, switch the oven to grill or broil mode on medium to high heat (top heat only), and cook for a further 5 minutes, or until the top is golden and lightly crisp. Let the strata rest in the tin for 10 minutes before serving.