1. Melt the butter in a large pot over medium heat. Add the onions, garlic, bay leaves, thyme, and salt and pepper and cook until the onions are very soft and caramelized, about 25 minutes. Add the wine, bring to a boil, reduce the heat and simmer until the wine has evaporated and the onions are dry, about 5 minutes. Discard the bay leaves and thyme sprigs. Dust the onions with flour and give them a stir. Turn the heat down to medium low so the flour doesn't burn, and cook for 10 minutes to cook out the raw flour taste. Now add the beef broth, bring the soup back to a simmer, and cook for 10 minutes. Season, to taste, with salt and pepper.
2. Once the soup is done, preheat the broiler. Arrange the baguette slices on a baking sheet in a single layer. Top the bread with the Gruyere and broil until bubbly and golden brown, 3 to 5 minutes.
3. Ladle the soup in bowls and float the Gruyere toasts on top.