Dice the bacon and onion relatively small. Cook the bacon in a small/medium skillet/frying pan over a medium heat until meat is cooked, some fat is rendered but not not crisping.
Add the onion then cook until the onion softens. Crush the garlic and add to pan, stir and cook another minute or two until the bacon is starting to crisp.
Roughly chop the spinach and add to the pan, a handful or two at a time, stirring in so it wilts down.
Once it has all been added and has wilted, remove from the heat and set aside. This can be made ahead and refrigerated.
Put half of the bread in the bottom of an oven dish (approx 8x6in/20x15cm), spread over half the spinach-bacon mixture, then half the dates and half the cheese. Repeat with the rest of the bread, spinach-bacon mixture, dates and cheese.
Whisk together the eggs and milk (or milk/cream mix - you can sub 1/3 of milk for cream), add a little pepper if you like, and pour it evenly over the dish. Cover and refrigerate overnight.
In the morning, preheat the oven to 350F/190C and leave the dish out to warm up to room temperature as the oven heats up.
Bake uncovered for approx 50min until it puffs up a bit, browns on top and is cooked through.