Clean the mushrooms by wiping them with a damp paper towel. Do not rinse them as they will absorb water. Slice them thinly.
In a large pot over medium heat, melt the butter. Add the onion and garlic, and sauté until the onions are translucent and softened, about 5 minutes.
Add the sliced mushrooms to the pot and cook, stirring occasionally, for another 5-7 minutes, or until the mushrooms have released their liquid and started to brown.
Sprinkle the flour over the mushrooms and stir well to combine. Cook for another 1-2 minutes.
Gradually add in the chicken broth, stirring continuously, so that no lumps form. Increase the heat and bring the mixture to a boil. Once it's boiling, reduce the heat to a simmer.
Let the soup simmer for about 20 minutes. The mushrooms should be very tender and the flavors well combined.
Use an immersion blender to puree the soup until it's as smooth or chunky as you like. If you don't have an immersion blender, you can transfer the soup to a regular blender in batches, but be careful because hot soup can cause a blender to splatter. Always allow the soup to cool a bit before blending it and never fill the blender more than halfway.
After blending, return the soup to the pot (if necessary) and stir in the heavy cream. Heat the soup for another 2-3 minutes, until it's heated through.
Season the soup with salt and black pepper to taste.
Ladle the soup into bowls and garnish with fresh parsley and/or thyme before serving.