Heat the canola oil over medium heat in a large soup pot. Add onions and fry for 5 minutes, but not browning. Add garlic and fry for 1 minute. Then add cauliflower florets, potatoes, carrots, water, salt and pepper. Cover the pot and bring to a boil. Reduce heat to medium and simmer until vegetables are tender, stirring occasionally.
Puree in a blender or food processor until smooth. Return to the pot, add milk and heavy cream. Stir well and adjust seasonings. Heat the soup for 1-2 more minutes (don't let boil). If soup is too thick, add more milk. Garnish with black pepper before serving.