In large sauté pan over medium heat, warm 1 tablespoons oil. Add onion; season with salt and pepper. Cook, stirring occasionally, until caramelizes, about 15 minutes. Transfer to bowl.
In same pan over medium heat, warm 1/2 tablespoons of oil. Add half of spinach; season with salt and pepper. Cook, stirring, until wilted, 2-3 minutes. Transfer to colander. Repeat with 1/2 tablespoons of oil and remaining spinach. Press out excess moisture.
In large bowl, toss together bread cubes, onion, spinach, ham and cheese. Transfer to buttered 4 quart baking dish.
In bowl, beat together eggs, half-and-half, 1 teaspoons salt, and pepper. Pour over bread mixture. Cover with plastic wrap; refrigerate 2-16 hours.
Preheat oven to 350 degrees. Remove plastic wrap from strata; cover with lid or foil. Bake 20 minutes. Uncover; bake until top is browned and strata is cooked through, 40-50 minutes more.