Heat olive oil in a Dutch oven or soup pot over medium heat. Add the onions, and season with a little salt and pepper. Cook, stirring occasionally until onions are nicely browned, about 20 minutes. This step can not be hurried, the end result will be a rich golden brown mass of onion.
Melt butter in a large stockpot over medium heat. Stir in flour to make a smooth paste, and cook for about 3 minutes, stirring constantly. Mix in the onion, celery, and garlic; season with salt and pepper. Continue to cook and stir for about 4 minutes. Gradually whisk in the half and half cream