In a large pot, cook the bacon over medium heat until crispy. Remove the bacon and crumble it. Set aside.
In the same pot, add the diced onion and cook for 2–3 minutes until softened. Add the garlic and cook for another minute.
Add the diced potatoes to the pot, then pour in the chicken broth. Bring to a boil, then reduce the heat to a simmer. Cook for about 15 minutes, or until the potatoes are tender.
Use a potato masher or immersion blender to mash the potatoes to your desired consistency. You can leave some chunks for texture or blend it smooth if you prefer.
Stir in the heavy cream, milk, shredded cheddar cheese, and season with salt and pepper. Continue cooking for another 5–7 minutes until the cheese is melted and the soup is creamy.
Stir in the crumbled bacon and cook for an additional 5 minutes.
Serve hot, topped with extra cheese, green onions, or sour cream if desired.