In a large saucepan, add the oil, and cook the onions, celery, garlic, and potatoes for 10 minutes, stirring regularly.
Add the stock, and season with salt and pepper. Simmer the contents for 20 minutes, until the potatoes and celery are soft.
Transfer the vegetables to a blender, and blend until everything is smooth.
Transfer the soup back to the pan with the burner on low, and stir in the milk and half-and-half. Serve the soup hot with celery leaves, croutons, and a swirl of half-and-half to garnish, if desired.