In a large pot, cook bacon over medium heat until crispy. Then, remove it with a slotted spoon and set it aside.
Remove excess bacon grease from the pot with a paper towel, being careful as it will be hot. Leave some grease in the pot.
Add butter and onion to the pot, and cook until the onion is translucent.
Add garlic and sauté for a minute. Then, add flour and mix carefully for another minute.
Add milk and heavy cream one by one.
Then add the chicken broth, followed by salt and pepper. Stir everything together.
Add potatoes and bring to a boil. Boil until tender, about 15 - 20 minutes.
Reduce heat to medium-low. Then, add your cheddar cheese and bacon, and stir for 3-4 minutes. Set aside some of the cheese and bacon to use as toppings.
After your potatoes are done, mash them inside the pot.
Serve right away and top with cheese, sour cream, bacon, and green onions.