Cut the leeks in half lengthwise before you wash them – sand and grit tends to work their way in between the layers so you have to be very thorough. Thinly slice the white and pale green parts crosswise and throw out the green tops.
Set a large saucepan or Dutch oven over medium heat and add the butter or oil. Sauté the leeks, onion, and garlic for 8-10 minutes, until soft and translucent. Add the potatoes and stock and bring to a boil. Reduce the heat and simmer for about 20 minutes, until the potatoes are tender. Season with salt and pepper and remove from the heat.
Purée the soup in a blender or food processor, or use a hand-held immersion blender right in the pot. If you’ve used the blender, return the soup to the pot, set it over medium heat, and stir in the milk or cream. Heat it through without bringing it to a boil.
Serve hot, at room temperature, or put it in the fridge and serve it chilled.