Cut the crowns from the stem of the cauliflower. Divide into small flowerets and set aside.
Dice the stem. Place the diced stems in a large sauce pan with the four cups of water on medium-high and boil until tender. This will take about 30 minutes and the water will be reduced by about half.
While the stems are boiling, steam the flowerets until they slightly tender. After they are cool, chop finely.
After the stems are soft, puree them until smooth using a blender or stick blender.
Place the olive oil in a medium stock-pot over medium-high heat and add the leeks. Reduce the heat to medium and cook slowly until soft. Add the flour and stir until well blended. Add the milk and stir. Add the pureed stems and half of the chopped cauliflower flowerets and salt.
As the soup thickens, blend it again using a blender or stick blender.
Add the remaining finely chopped cauliflower flowerets and stir. As the soup reheats, add the cheese in 3 batches and allow it to melt.
Heat gently on low for about 15 minutes and serve.
