In a Dutch oven, melt butter over medium heat. Add onion and carrots and cook until soft, about 5 minutes.
Sprinkle flour over onion/carrot mixture. Cook and stir for 2 minutes.
Gradually add chicken broth, whisking constantly. Add half-and-half. Bring to a simmer.
Add broccoli and stir into mixture. Simmer for 20 minutes, stirring occasionally. If desired, use a potato masher to break broccoli up some.
Turn heat to low. Add shredded cheeses. Stir until melted. Add cream cheese in small chunks and whisk well to combine.
Stir in salt, peppers, and garlic powder.
Let simmer for a few minutes and serve.