Melt the butter in a large pot over medium heat. Add the leeks and cook 5-6 minutes, stirring occasionally, until soft and translucent.
Add the garlic and thyme and cook 30 seconds, until fragrant. Stir in the potatoes and broth, bring to a boil, then reduce the heat and simmer, partially covered, 15-18 minutes, until the potatoes are fork-tender.
Stir in the cannellini beans and simmer 2 minutes more. Off the heat, blend the soup with an immersion blender until mostly smooth, leaving a few chunks for texture (or blend half in a countertop blender and return it to the pot).
Stir in the milk, salt, and pepper and warm over low heat 2-3 minutes; do not let the soup boil once the milk is in.
Taste and adjust the salt and pepper, ladle into bowls, and serve hot.