Preheat oven to 350°F. Grease a 9x13-inch baking dish with olive oil.
In a large skillet over medium heat, warm olive oil. Sauté red onion and garlic for 3-4 minutes until softened. Add spinach and cook until wilted, about 2 minutes. Set aside to cool slightly.
In a large bowl, whisk together eggs, half-and-half, oregano, basil, salt, and pepper.
Spread bread cubes in the prepared baking dish. Layer spinach mixture, cherry tomatoes, olives, and feta cheese over the bread.
Pour egg mixture evenly over everything, gently pressing down to submerge the bread.
Cover tightly with foil and refrigerate for at least 1 hour or overnight (or freeze for later).
Bake covered for 30 minutes, then uncover and bake for 10 more minutes until eggs are set and top is lightly golden. Let cool 5 minutes before serving. If frozen, thaw in refrigerator overnight before baking.