Heat 1 tablespoon oil in a large pot over medium heat. Add ham (or prosciutto) and cook, stirring often, until lightly browned, about 3 minutes. Transfer to a plate; set aside.
Add the remaining 1 tablespoon oil and onion to the pot. Cook, stirring often, until softened, about 3 minutes. Add garlic; cook, stirring, for 1 minute. Add broth, broccoli, cauliflower, thyme and salt. Reduce heat to a simmer, cover and cook until the broccoli is very tender, about 6 minutes. Add spinach and parsley. Remove from heat and let stand, covered, until the spinach is wilted, about 5 minutes. Puree the soup in the pot with an immersion blender or in batches in a regular blender. (Use caution when blending hot liquids.) Cover to keep warm.
Meanwhile, bring water and vinegar to a boil in a large saucepan. Reduce to a bare simmer. Gently stir in a circle so the water is swirling around the pan. Break an egg into a small bowl, then submerge the lip of the bowl into the simmering water and gently add the egg. Working quickly, repeat with the remaining eggs. Cook 4 minutes for soft set, 5 minutes for medium set and 8 minutes for hard set.
Serve the soup topped with a poached egg, some ham (or prosciutto) and parsley, if desired.
