Heat oil in a large pot over medium heat until hot but not smoking. Add onion, garlic, and broccoli stems; cover, and cook, stirring occasionally, until vegetables are soft, about 15 minutes. Add stock and salt; cover, raise heat to medium-high, and bring to a boil. Add broccoli florets; reduce heat, and simmer, uncovered, until florets are just tender, about 10 minutes.
Remove soup from heat, and let cool, about 10 minutes. Fill a blender no more than halfway to puree soup in batches until smooth. Return soup to pot; stir in milk and cayenne. Cook over medium heat until heated through (do not boil).
Heat broiler. Divide cheese among bread slices; toast under broiler until melted and golden brown, 45 to 60 seconds. Divide soup among bowls. Top each bowl with a cheese toast, and serve.