Grease a 9x13 pan very lightly with non-stick cooking spray. Set aside.
Cut bread slices into 1 inch chunks and stagger them in the prepared baking dish as even as possible. You may need more or less bread depending on thickness/size etc. so just be sure to fill up the pan 3/4 to the top. In a large measuring cup or bowl, whisk eggs, milk, heavy cream, sugar and vanilla together until combined. Pour mixture evenly over bread pieces trying to moisten every piece as well as you can. Cover and store in the refrigerator over night.
Next, prepare the crumble. In a medium sized bowl, whisk together flour, brown sugar, cinnamon and salt. Cut in butter with a fork or your hands (my preferred method) until a coarse meal consistency is achieved. If the mixture is too "wet" and buttery, add a little bit more flour one tablespoon at a time. until the mixture is crumbly. Either cover the bowl with saran wrap or dump the mixture into a zip lock bag and store in the refrigerator over night with the pan of french toast. (I like the bag method because in the morning I can break up the crumble pieces with my fingers through the bag without having to squish it in my hands.)
In the morning, preheat your oven to 350 degrees. Uncover the french toast and evenly distribute the crumble on top. Bake for 40 minutes - 1 hour depending on how gooey you want the center to be. Once you hit the 40 minute mark, I would start checking the center every 5 minutes until its to your liking. (I bake mine for about 50 minutes because I don't like mine too gooey, but I don't like it dry either.) Once done, serve warm with maple syrup or even just a sprinkle of confectioner's sugar on top.
This Overnight French Toast will keep for up to 2 days stored either at room temperature or in the refrigerator for up to 3 days.