In a large pot, cook bacon until crisp. Remove and set aside. Leave ~1 tbsp bacon fat in the pot.
Add butter to the bacon fat. Sauté onion 3–4 minutes until very soft. Add garlic, cook 30 seconds.
Sprinkle flour over the onion mixture. Stir constantly for 1–2 minutes.
Stir in diced potatoes and chicken broth (just enough to cover). Bring to a boil, then reduce to a simmer.
Simmer 12–15 minutes, until potatoes are fork-tender.
Use a potato masher or the back of a spoon to mash about ⅓–½ of the potatoes right in the pot.
Stir in milk, heavy cream, cheddar, sour cream, salt & pepper. Add most of the bacon.
Simmer gently 5–10 minutes until thick and creamy.
Top with extra cheese, bacon, green onions, and sour cream.