Preheat oven to 375°F. Grease a 9x13 inch casserole dish with butter or nonstick spray.
Melt 2 tablespoons of butter in a large skillet set over medium heat. Add brussels sprouts and cook until browned, about 5 minutes. Transfer to a separate bowl and set aside.
Add another 2 tablespoons of butter, mushrooms and onions to the skillet, season with salt and pepper, and cook until soft, about 5-6 minutes. Add garlic and cook for 1 minute more. Add to the bowl with the brussels sprouts.
Melt 2 tablespoons of butter in skillet. Add flour and whisk to form a thick paste. Add chicken or vegetable broth gradually while whisking constantly. Whisk in half and half. Increase heat to medium high and bring to a boil, whisking frequently. Simmer until thick for about 5 minutes until thickened. Season with salt and pepper to taste.
Combine brussels sprouts mixture with the sauce and pour into the prepared casserole dish. Melt remaining 2 tablespoons of butter and combine with the breadcrumbs in a medium bowl. Add the french fried onions. Scatter mixture on top of the brussels sprouts mixture.
Bake casserole until bubbly and topping is brown, about 20-25 minutes.
Note: This casserole can be prepared ahead of time. Let baked casserole cool completely, then cover with plastic wrap and chill in the fridge for up to 2 days. To reheat, cover with foil and warm in a 350°F oven for about 30 minutes. Remove foil for the last 5-10 minute to get the topping nice and crispy again.
Calories: 356kcal, Carbohydrates: 27g, Protein: 6g, Fat: 26g, Saturated Fat: 14g, Cholesterol: 41mg, Sodium: 485mg, Potassium: 522mg, Fiber: 4g, Sugar: 3g, Vitamin A: 1161IU, Vitamin C: 73mg, Calcium: 91mg, Iron: 2mg