Melt the butter in a large saucepan, add the leeks, potatoes and onions and stir well. Cook over a medium heat until all the vegetables have softened. It is important to keep stirring to stop the vegetables from browning.
Add the stock and milk then season with salt and pepper. Bring to the boil, then lower the heat and simmer for about 20 minutes, until the vegetables are nice and tender.
Puree the mixture in a food processor or use a hand blender, until nice and smooth, then pour into a clean saucepan. You can pass through a sieve if you want just to remove any lumps.
Adjust the seasoning if necessary and reheat until very hot, pour into soup bowls, and enjoy with nice crusty bread.