Add bacon to large pot over medium-high heat.
Cook the bacon until crisp.
Remove the bacon from the pot, reserving about 2 tablespoons of the bacon grease.
Add the onion, and cook until slightly softened, about 5 minutes.
Add the garlic and shredded potatoes, cooking another 2-3 minutes.
Add the flour, stirring well to combine, and cook for 1 minute.
SLOWLY add the milk, half and half, and chicken broth. Note: if you don't do this slowly, the soup will not be as thick and creamy, so have patience when doing this step.
Bring the soup to a simmer, reduce heat to low, and let simmer for 20-30 minutes, until the potatoes are softened.
Remove 1/2 cup of the soup in a small bowl, and mix with the sour cream. Return mixture to the pot, stirring to combine.
Stir in 2 cups of the cheese and all but 2 tbsp of the bacon.
Serve topped with diced green onions, additional cheese, and reserved chopped bacon.