Grease a 9 x 13 casserole dish and set aside.
Cut the bread into 1-inch chunks and spread them evenly in the bottom of the casserole dish.
In a large bowl, whisk together the eggs, milk, cream, both sugars, vanilla, and cinnamon. Pour the mixture evenly over the bread, ensuring all pieces are coated.
Cover the casserole and refrigerate for several hours or overnight.
To prepare the streusel topping, combine flour, brown sugar, cinnamon, and salt. Add butter and cut into the dry mixture until it forms a crumble. Refrigerate overnight if desired.
Preheat the oven to 350ºF when ready to bake.
Crumble the streusel topping evenly over the casserole, covering as much as possible.
Bake for 45 minutes to 1 hour, adjusting the time for desired texture. Serve warm with syrup and toppings.
