Add the butter to a large soup pot and heat over medium heat. Add the onions and saute until soft and translucent (about 4-5 minutes). Add the garlic and cook until fragrant (about 30 seconds)
Turn the heat up to medium high and add the broth and broccoli. Bring to a boil, then reduce heat and simmer until the broccoli is tender (about 15-20 minutes). Add salt and pepper, to taste.
Stir in the cream cheese and heavy whipping cream and cook until the cream cheese is melted and fully incorporated.
Reduce heat to low. Add the cheese, 1/2 cup at a time, stirring constantly, until melted.
Turn off the heat and let cool slightly before using an immersion blender to puree the soup (*Note 3 & 4)
Stir in Xanthan gum, if desired, and let sit a few minutes to thicken.
Transfer into individual soup bowls, and top with bacon crumbles and extra cheese. Enjoy immediately.