Heat 3 Tbsp butter in a 2 qt sauce pan over medium heat. Cook onion in margarine about 2 minutes, stirring occasionally. Stir in flour, salt, pepper.
Cook, stirring constantly, until smooth and bubbly; remove from heat. Stir in milk. Heat to boiling, stirring constantly. Boil and stir 1 minute.
To Freeze: Freeze sauce in a ziploc baggie and freeze ham in a ziploc baggie, separately.
To Reheat: Grease a 2 qt casserole dish. Slice 6 medium potatoes (about 4 cups). Place a layer of potatoes in the dish, then ham. Continue to layer until dish is full, ending with potatoes on the top.
Melt the sauce in a covered sauce pan stirring often, just until melted. Pour over potato casserole. Cover and bake for 30 minutes. Uncover and bake another 60-70 minutes
or until potatoes are tender. Let stand 5 - 10 minutes before serving.