Combine all ingredients in a large stock pot. Bring water to a boil and then reduce to simmer for 3 to 4 hours or until broth is developed to your liking.
Strain out solids, reserving ham to add back to soup later.
Crispy Ham (optional):
Melt 1 Tablespoon of butter in a frying pan and add half of the reserved ham to the pan.
Add ham stock and navy beans and bring to a boil. Reduce heat to low and simmer for about an hour or until navy beans are cooked through.
Add back ham from making ham stock (but not the crispy ham.) If there was not a lot of ham on the ham bone, you may wish to add additional diced ham. Also add in the carrots and corn. Simmer until carrots are tender.
Add milk, Vegeta and pepper. Taste and add additional seasoning if necessary. Note: if you don't have Vegeta, you can substitute vegetable or chicken bouillon. If you have neither, then use salt to taste.
Thicken soup with a flour and water mixture to your liking.
Lastly, add baby spinach and cook until leaves are just wilted.