In a large skillet over medium heat, break up sausage and sauté with olive oil and onion until golden brown, about 10 to 12 minutes. Remove from heat and set aside. Meanwhile, if using fresh bread, lightly toast and set aside.
In a medium bowl, whisk rosemary, cream, half-and-half, eggs, salt, and pepper, and set aside.
Lay half of bread in buttered baking dish, sprinkle with half of sausage mixture, half of tomato slices, and half of cheese. Repeat layering with remaining bread, sausage, tomato, and cheese. Slowly pour egg mixture over top. Cover and refrigerate 30 minutes or overnight.
Preheat oven to 350°. Uncover and place baking dish on a baking sheet to catch overflow. Bake 40 minutes, or until golden brown. Allow to sit 10 minutes before serving.