Slice the bread into roughly 1.5-2cm cubes, place the bread into a large bowl and set aside. If using different kinds of cheese, mix them together in a separate bowl.
In a frypan stir and cook the bacon on medium to high heat until the bacon releases some fat. Add in the onions and garlic and continue to stir and cook for 2 minutes, do not let the garlic burn. Set aside to cool off slightly.
Reserve 1/4 cup of bacon and 1/2 cup of cheese for the topping. Wait for the bacon to cool down completely, place the bacon mixture and cheese in separate bowls, cover them with plastic film and place in the fridge.
In a bowl, whisk the eggs, milk and salt until combined. Add in the cheese(s), bacon mixture and stir to mix. Pour the egg mixture over the bread and mix well, the bread pieces should all be soaked in the mixture.
Cover the bread mixture with plastic film, softly press down on the film to flatten the surface of the bread. Place it in the fridge overnight or for at least 2 hours before cooking to allow the liquids to soak into the bread.
Preheat oven to 200°C (390°F) or 180°C (360°F) for fan-forced ovens. Generously grease a 20cm 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, press the mixture down firmly using a flat spatula. Sprinkle the reserved cheese(s) and bacon on top of the bread mixture, place foil loosely on top of the tin and bake for 45 to 50 minutes. It is cooked when a skewer comes out clean when inserted in the middle. Remove foil, switch the oven to grill/broil mode (heat element from the top) and let it cook for 5 minutes or until the strata is nice and golden in colour.