In a large saucepan, heat the olive oil over medium heat. Add the onion, season with salt and pepper and cook, stirring often, until softened, about 7 minutes. Add the potatoes and 3 1/2 cups water and bring to a boil; lower the heat and simmer for 5 minutes. Add the broccoli, cover and cook just until tender, about 7 minutes. Using a blender, puree half the soup; combine with the other half. Stir in 2 cups shredded cheese, then stir in the cream. Season with salt and pepper and keep warm over low heat.
Preheat the broiler. In a medium bowl, using a fork, combine the remaining 2 cups cheese, the ham and mayonnaise. Season with pepper. Spread the mixture on the bread and broil until bubbly and golden. Serve the toasts with the soup.