In a large pot, melt butter over medium heat. Add onion and cook, stirring occasionally until the onion is soft, about 8 minutes. Add cauliflower and cook until it begins to brown. This step took about 20 minutes for us.
Pour broth and water into the pot and bring to a boil over medium-high heat. Reduce the heat and simmer until the cauliflower is very tender, another 20 minutes or so.
Be very careful when blending hot liquids! Transfer the mixture to a heat-safe bowl.
Fill your blender halfway with the cauliflower mixture and chop coarsely. Pour the coarsely shopped cauliflower back into the original pot.
Refill the blender halfway. This time (and any subsequent times necessary), purée the soup until it’s smooth. Return the soup to the original pot.
If you prefer your soup to be thinner, add more chicken broth to the pot of soup and stir until it’s blended.
Heat the soup over medium until it’s hot and bubbly. Add the shredded cheese and stir until it’s all melted and incorporated.
To serve, sprinkle with cayenne pepper and a few shards of shredded cheese.
We really liked this soup with some chewable bits of cauliflower in it, but you could purée all of the soup smooth if you prefer that.