Slice off the dark green tops of the leeks and discard or save for stock. Slice the white and light green parts in half lengthwise, then thinly slice them crosswise.
Leeks can hold a lot of dirt, so place the sliced leeks in a bowl of cold water and swish them around to remove any dirt or sand. Drain and set aside.
In a large pot or Dutch oven, melt the butter over medium heat. Add the chopped onion, minced garlic, and sliced leeks. Sauté for about 5-7 minutes until they become soft and fragrant but not browned.
Stir in the diced potatoes, salt, pepper, and thyme. Pour in the vegetable or chicken broth and bring the mixture to a boil.
Once boiling, reduce the heat to low and let it simmer for 20 minutes, or until the potatoes are tender when pierced with a fork.
Using an immersion blender, carefully blend the soup until smooth and creamy. If you don’t have an immersion blender, you can blend the soup in batches in a standard blender. Just make sure to allow the soup to cool slightly before blending to avoid any splatters.
Once the soup is blended, stir in the heavy cream. Let it cook on low for an additional 5 minutes to allow the flavors to meld together.
Taste the soup and adjust the seasoning as needed, adding more salt or pepper if necessary.
Ladle the soup into bowls and garnish with freshly chopped chives or parsley. Serve with crusty bread for a complete meal.