Melt butter in a large stockpot or Dutch oven over medium heat. Add onions, and cook, stirring often, until deep golden brown and caramelized, about 30-40 minutes.* Stir in garlic until fragrant, about 1 minute.
Stir in wine, scraping any browned bits from the bottom of the stockpot.
Stir in beef stock, thyme and bay leaves. Bring to a boil; reduce heat and simmer, stirring occasionally, until slightly reduced, about 15-20 minutes. Remove and discard thyme sprigs and bay leaves.
Stir in white wine vinegar; season with salt and pepper, to taste.
Preheat oven to broil.
Place baguette slices onto a baking sheet. Place into oven and broil until golden brown on both sides, about 1-2 minutes per side; set aside.
Divide soup into ramekins or ovenproof bowls. Place onto a baking sheet. Top with baguette slices to cover the surface of the soup completely; sprinkle with cheeses. Place into oven and broil until golden brown and cheeses have melted; about 2 minutes.