Melt butter in a frying pan over medium-low heat. Add the shallots, leeks, and celery. Cook for around 15 minutes until they are soft but not colored.
Add the potatoes and vegetable stock and bring to a boil. Then lower the heat and cook for 10-15 minutes until the potatoes are soft. Add the watercress and cook for another 10 minutes. Turn off the heat and add the milk and about 2 ounces of sour cream.
Using an immersion blender, puree the soup. Transfer to a large bowl, let cool and then refrigerate overnight.
When you are ready to serve remove the soup from the fridge and either re-heat over a low flame or pour into bowls. In a separate bowl mix the sour cream and horseradish, and season. Serve the soup with a dollop of the horseradish cream on top.