Make the pastry: In the bowl of a food processor, combine the butter and cream cheese. Process until combined. Add cream, and pulse to combine. Add the flour and salt, and pulse just until a ball forms. Turn out onto a lightly floured surface, and knead a few times. Divide dough in half, pat each half into a disc, and wrap in plastic. Refrigerate for at least 1 hour.
Preheat oven to 350 degrees. Make the filling: Place the spinach in a very large pot over medium-high heat. Cover, and cook, stirring once or twice, until spinach wilts, 5 to 7 minutes. Remove from pot, and set aside to cool. Squeeze dry, wringing out the cooked spinach in cheesecloth (there should be 2 cups), and coarsely chop.
Meanwhile, heat a medium skillet over medium heat. Add oil and onion, and cook, stirring occasionally, until translucent but not brown, 3 to 4 minutes. Remove from heat to cool briefly.
In a large bowl, lightly beat 2 eggs. Add ricotta, Parmesan, salt, and pepper; mix to combine. Stir in the spinach and onions. Add ham; stir to combine.
On a lightly floured surface, roll out one disc of dough to a 13-inch circle. Transfer the dough to a 9-inch glass pie plate, allowing the excess dough to hang over the edge of the plate. Trim edges to 1/2 inch. Spread spinach mixture evenly into pie plate. On a lightly floured surface, roll out second disc of dough to a 13-inch circle. Transfer to top of the pie. Trim top crust to overlap the bottom by 1/4 inch. Fold top crust over bottom, and crimp edges together with your fingers. Cut a few small vents. Beat the remaining egg with a few drops of water, and brush over surface of pie. Bake until crust is golden brown, about 1 hour. Cool for 10 minutes before serving.