Grease a 9-by-13-inch baking dish with butter.
Heat the olive oil in a medium skillet over medium heat. Add the onions and saute until translucent, about 7 minutes. Add the sausage and brown, about 5 minutes. Remove the onions and sausage from the pan using a slotted spoon. Transfer to a shallow bowl and let cool to room temperature.
In a large mixing bowl, whisk the eggs, milk, salt, pepper and garlic powder. Stir in the bread, cooked sausage mixture and cheese. Pour the mixture into the prepared baking dish and cover with foil. Let the dish sit in the refrigerator for at least 1 hour and up to overnight.
Preheat the oven to 350 degrees F.
Bake, still covered with foil, for about 50 minutes. Remove the foil and return the baking pan to the oven. Bake to brown the top of the bread pudding, about 10 minutes more. Serve immediately.