Heat a large pot, add the olive oil, garlic and onions. Sauté until onions are soft, about 2 minutes.
Add the cauliflower, carrots, celery, potatoes, thyme, rosemary, salt and pepper. Stir until combined. Add the chicken broth and simmer for 20-25 minutes, or until soft.
In a medium pan, melt the butter and whisk in the flour until it forms a paste. Slowly add in the milk and whisk until smooth. Add the cheese and continue to whisk together until the cheese is completely melted and a slightly thickened roux forms.
Slowly add the roux to the soup and stir until combined.
With an immersion blender, blend half of the soup together just until it has a thick and creamy texture. You could also transfer half of the soup to a blender or blend with a handheld potato masher. Stir until the soup is completely blended together. There will be small chunks and the soup will thicken. Let simmer for another 5 minutes.
Top the soup with more shredded cheese and serve with fresh bread or toasted baguette slices. Enjoy!