In a Dutch oven, melt the butter.
Add onion, celery and carrot. Sauté for 3-4 minutes or until softened.
Add garlic, and cook for 30 seconds.
Add flour, and cook for 1 more minutes while stirring.
Pour in the chicken stock, add potatoes, ham, bay leaf, thyme, salt and pepper. Give everything a stir, bring to a boil, reduce heat to a simmer then cook covered for 15 minutes (stirring occasionally) or until the potatoes are tender.
Discard bay leaf, mix in the milk and simmer for 5 more minutes or until the soup has thickened.
Taste the soup and adjust seasonings to your preference.