Scrub and pierce potatoes and bake at 400 degrees F. until tender, 50 to 60 minutes. Cover with an inverted bowl to keep warm while preparing the sauce.
While potatoes bake, melt butter in a medium saucepan over medium heat. Saute onion till tender. Whisk in flour and continue cooking and stirring for a minute or two.
Gradually whisk in the milk and then the cream. Continue stirring while bringing mixture just to a boil. Lower heat and barely simmer for 5 or 6 minutes. Remove from heat.
In a small bowl, whisk egg yolks. Temper yolks by drizzling in a bit (1/4 cup) of the hot mixture into them while whisking.
Add the tempered yolks to the rest of the sauce and return the saucepan to low heat. Cook until mixture thickens, about 1 minute. Stir in lemon juice, cayenne and nutmeg.
Reserve about 1/3 cup Swiss cheese and add remaining cheese to sauce, stirring until cheese melts. Stir in the ham and heat through, about 2 minutes over low heat. Remove from heat. Taste and adjust seasonings, if needed.
Preheat the broiler. Split potatoes lengthwise and place in a large casserole (11' X 13') Flake the potato flesh with a fork and season lightly with salt and pepper.
Spoon sauce over the potatoes, distributing evenly. Sprinkle with reserved Swiss cheese and broil until heated through and just starting to brown. Serve.
This can be prepared ahead and refrigerated, covered well, for up to 24 hours. Bake in a 375 degree oven for 40 to 50 minutes until hot and starting to brown.