Rinse the cauliflower and break it into bite-size florets.
In a large pot, heat a splash of olive oil over medium heat. Add the onion and cook until softened, then stir in the garlic.
Add the cauliflower and broth. Bring to a simmer and cook for about 20 minutes, until the cauliflower is tender when pierced with a fork.
Purée the soup with an immersion blender (or in batches in a regular blender) until smooth. Return to the pot and stir in the milk or cream and cheese until melted.
Season with salt and pepper. Serve warm.