Bring a large saucepan of salted water to a boil.
Heat the oil in a medium saucepan over medium-low heat. Add the onion and saute, stirring occasionally, until soft and starting to caramelize, about 20 minutes. Add the garlic and continue to cook until softened, 3 to 5 minutes.
Meanwhile, put the spaghetti in the boiling water and cook according to the package instructions, about 8 minutes.
Add the ham to the pan with the onions and garlic and cook until just warmed through, about 2 minutes. Whisk together the Parmesan, cream, eggs, 1 1/2 teaspoons salt and some pepper in a bowl.
Drain the pasta and transfer to the saucepan with the onion mixture and toss well. Immediately stir in the egg and cheese mixture until well combined. Serve immediately.
Adjust the oven racks to accommodate a large covered roasting pan. Fit the pan with a shallow rack. Preheat the oven to 350 degrees F.
Unwrap the ham and rinse it in cold water. Place it on the rack in the roasting pan. Cover the pan with the lid and bake for half the estimated cooking time (total cooking time is about 20 minutes per pound, so 6 hours to 6 hours 40 minutes total).
Halfway through the estimated cooking time, add the sugar and honey to a saucepan, cooking over medium heat until smooth and the sugar is dissolved. Pour the mixture over the ham and continue baking the ham, basting occasionally with the drippings in the roaster. Check for doneness at the end of the estimated cooking time by inserting a meat thermometer at a meaty point (not into fat or touching the bone). It should register 160 degrees F.
Trisha's preferred ham for this recipe is her Baked Ham with Brown Sugar Honey Glaze, but you can use 8 to 10 ounces of any not-too-salty country ham.
Adapted from "Georgia Cooking in an Oklahoma Kitchen: Recipes from My Family to Yours" by Trisha Yearwood © Clarkson Potter 2008. Provided courtesy of Trisha Yearwood. All rights reserved.