Cook the bacon in a large pot over medium heat for 8 to 10 minutes, until crisp. Move it to a paper towel-lined plate and pour off all but 1 tablespoon of the fat.
Add the butter and onion to the pot and cook for 5 to 6 minutes, until soft and translucent. Add the garlic and cook for 1 minute.
Sprinkle in the flour and stir for 1 minute.
Slowly whisk in the broth and milk, scraping the bottom of the pot, until smooth.
Add the potatoes, salt, pepper and garlic powder. Bring to a gentle simmer, then cook partially covered for 15 to 20 minutes, stirring now and then, until the potatoes are very tender.
Mash some of the potatoes right in the pot until the soup reaches the thickness you like, leaving some chunks.
Reduce the heat to low. Stir in the cheese a handful at a time until melted.
Remove the pot from the heat and stir in the sour cream and half of the bacon. Taste and adjust the salt and pepper.
Ladle into bowls and top with the remaining bacon, extra cheese, green onions and sour cream.