Cook the bacon in a large dutch oven or pot until crisp, remove to a paper towel lined plate to drain and then chop. Reserve 1 tbsp bacon drippings in the pan and discard the rest.
To the pan add the butter and let it melt over medium heat. Toss in the garlic, onion, carrots and celery and saute until tender about 3 to 5 minutes. Sprinkle in the flour and stir, until the mixture is clumpy (about 1 to 2 minutes).
Gradually whisk in the milk, half and half and chicken stock, stirring constantly. Add the broccoli, salt, garlic salt and black pepper, then bring mixture to a small boil. Cover and let cook for at least 7 to 8 minutes, or until broccoli is tender.
Stir in cheese and sour cream and add the chopped bacon back to the pot. Serve warm.