In a large stock pot over medium-high heat combine onions, carrots, garlic, and butter. Stir until butter is melted. Cook 2-3 minutes, stirring occasionally, until onions are translucent. Sprinkle flour over veggies and continue cooking.
Add potatoes, season with salt and pepper, and cook for 5 minutes.
Stir in broth, bring to a low boil and cook for 10 minutes until potatoes begin to get tender.
Slowly stir in evaporated milk and heavy cream. Bring to a simmer.
Cook for another 5 or so minutes until potatoes are fork-tender.
Transfer in batches to a blender (always be careful when blending hot liquids - do not overfill) and puree until smooth. Return to the pot. Or use an immersion blender right in the pot.
Stir in cheese until completely melted. Taste, add season as needed.
Serve immediately with fresh herbs, cracked black pepper, and cooked bacon if desired.