In a Dutch oven or heavy-bottomed pot, melt the butter over medium-high heat. Add in the chopped onions, garlic, and carrot. Sauté until the onion becomes translucent.
Add the flour and stir just to brown it (about 2 minutes). Browning the flour will take away the taste of raw flour. Once the flour has been stirred for a few minutes, slowly add the chicken broth, while mixing.
Let the broth simmer for about 15 minutes on medium heat (make sure to stir the soup occasionally). Add in the frozen broccoli florets and heavy cream and let the soup come to a simmer. Tip: Try blending part of the soup with an emersion blender for creamer soup. Just be careful not to puree too much or you will lose all the delicious chunks of broccoli.
Remove the pot from heat and add in the shredded sharp cheddar, medium cheddar, and Swiss cheese. Add salt and stir until the cheese is completely melted. Serve warm with croutons or french bread.
Shred your own cheese- Doing this guarantees a creamy consistency. Pre-shredded cheese has starch that makes it chunk up, and it's more likely to curdle.
Blanch fresh broccoli- If you use fresh broccoli, make sure to blanch it in a pot of boiling water for 1 minute before adding it to the soup.
Brown the flour- Browning the flour will take away the taste of raw flour in your roux. This only takes a couple of minutes and is worth it for the flavor of your soup.
Stir often- To create a creamy, smooth consistency, you'll need to stir as you add the broth so the flour doesn't become chunky. Stir throughout to keep the roux from burning as well.