Preheat oven to 400°
To prepare soup, remove white papery skins from garlic heads (do not peel or separate cloves); cut off tops, leaving root ends intact. Place garlic in a shallow roasting pan. Drizzle 1 tablespoon oil over garlic; sprinkle with 1/4 teaspoon salt and 1/4 teaspoon pepper. Cover with foil. Bake at 400° for 20 minutes. Add shallots to pan. Drizzle 1 tablespoon oil over shallots; sprinkle with 1/4 teaspoon salt and 1/4 teaspoon pepper. Cover and bake at 400° for 25 minutes or until tender and browned. Cool. Squeeze garlic to extract pulp; peel shallots. Discard skins. Set garlic pulp and shallots aside.
Heat 1 1/2 tablespoons oil in a Dutch oven over medium heat; add onion. Cover and cook 15 minutes or until lightly browned, stirring occasionally. Add garlic pulp, peeled shallots, and wine. Reduce heat; simmer, uncovered, 5 minutes.
Stir in broth, potato, and thyme; bring to a boil. Cover, reduce heat, and simmer 20 minutes or until potato is tender. Cool slightly. Place half of potato mixture in a blender; process until smooth. Pour pureed mixture into a large bowl. Repeat procedure with remaining potato mixture.
Return pureed mixture to pan; stir in milk, 3/4 teaspoon salt, and 1/2 teaspoon pepper into pureed mixture. Cook over medium heat 5 minutes or until thoroughly heated.
Preheat oven to 400°.
To prepare croutons, place bread slices in a single layer on a large baking sheet. Lightly coat tops of bread with cooking spray. Bake at 400° for 8 minutes or until lightly browned. Sprinkle cheeses evenly over bread slices, turning once. Bake 3 minutes or until cheese melts. Serve warm with soup.