Cook Bacon: Add the bacon to a large dutch oven or pot and cook over medium high heat until the bacon is crispy. Remove the bacon to a plate lined with a paper towel and set aside, leave the grease in the pot.
Saute Onion: Add the diced onion and cook until softened and translucent. Add the minced garlic and cook for an additional 30 seconds or until fragrant.
Add Flour: Stir in the flour and allow this to cook for about 2-3. This cooks the flour.
Create Broth: Pour in the chicken stock, milk and cream. Add in the diced potatoes, salt and pepper. Stir to combine.
Simmer: Bring the pot to a simmer and cook stirring occasionally until the potatoes are softened and easily mashed.
Blend: Turn heat off and using an immersion blender, blend the soup until some of the potatoes are blended, be careful not to overblend, leave chunks of potato in the soup. IF you don't have an immersion blender then carefully pour portions of the soup into a blender or food processor and blend until smooth. Return soup to the pot after blending.
Add Final Ingredients: With the heat still off, stir in the sour cream and shredded cheese. Return the bacon to the soup. Stir to combine.
Serve warm with any additional toppings of your choice.