1. Caramelize the onions. In a large heavy-bottomed stockpot, melt the butter over medium-high heat. Add the onions and sauté until well for about 30 minutes until caramelized (but not burnt), initially stirring every 3-5 minutes, then about once a minute near the end of caramelization to prevent burning*. Add garlic and sauté for 2 minutes. Stir in the flour and cook for an additional 1 minute. Stir in the wine to deglaze the pan, using a wooden spoon to scrape up any browned bits on the bottom of the pan.
2. Simmer the soup. Add the stock, Worcestershire, bay leaf, and thyme and stir to combine. Continue to cook until the soup reaches a simmer. Then reduce heat to medium-low, cover and simmer for at least 10 minutes. Discard the bay leaf and sprigs of thyme. Taste the soup and season with salt and pepper as needed.
3. Toast the bread. Preheat oven to 400°F. While the soup is simmering, slice the baguette into 1-inch thick pieces and arrange them in single layer on baking sheet. Bake for 6-8 minutes, until the bread is toasted and golden around the edges. Remove and set aside.
4. Broil the topping. Switch the oven to the broiler. Once the soup is ready to serve, place your oven-safe bowls on a thick baking sheet. Ladle the soup into each bowl, then top with a baguette slice and your desired amount of cheese (I used about 1/4 cup shredded cheese for each). Place on an oven rack about 6 inches from the heat and broil for 2-4 minutes, or until the cheese is melted and bubbly. (Keep a close eye on them so that they do not burn.) Remove from the oven and serve immediately while the soup is hot and bubbly.