Heat a frying pan over medium heat. Fry the diced bacon until crispy. Set aside.
Peel and dice the potatoes.
In a large stock pot, melt the butter over medium-low heat. Add the diced onions and saute until tender, about 5-6 minutes. Add the garlic and cook 1 more minute.
Whisk in the flour and wait until the mixture bubbles, about 1-2 minutes. Then, add the diced potatoes to the pot.
Pour in the chicken stock, half-and-half, salt, pepper and cayenne. Bring to a boil.
Once boiling, allow 10-15 of boiling time until the potatoes are tender. Reduce heat to low.
Use an immersion blender to puree the soup to the desired consistency. Remove from heat. Stir in the sour cream, cooked bacon and cheese. Serve warm.