Preheat your oven to 350°F (175°C) and generously grease a 9x13-inch baking dish with the softened butter.
Cook the chopped bacon in a large skillet over medium heat until crispy, about 10-12 minutes, then use a slotted spoon to transfer it to a paper towel-lined plate to drain.
Pour off all but 1 tablespoon of the bacon grease from the skillet, then add the diced onion and cook over medium heat until softened and translucent, about 5 minutes. Add the chopped spinach and cook, stirring frequently, until it has wilted and released its moisture, about 3-4 minutes. Remove the skillet from the heat.
In a large mixing bowl, vigorously whisk together the eggs, milk, heavy cream, salt, pepper, and garlic powder until the mixture is completely smooth and uniform in color.
Spread the cubed bread evenly across the bottom of the prepared baking dish. Top with the cooked bacon, spinach and onion mixture, and shredded cheddar cheese, distributing them evenly over the bread.
Slowly and evenly pour the egg mixture over everything in the dish, ensuring all the bread pieces are moistened. Gently press down on the top with a spatula to help the bread soak up the custard.
Bake for 45-55 minutes, or until the casserole is puffed, the top is golden brown, and the center is fully set (a knife inserted into the center should come out clean). Let the casserole rest for 10 minutes before slicing and serving.