Grease a 9" square baking dish. Preheat oven to 375° F.
Reserve 1 ½ - 2 ounces of cheese for topping the casserole.
In a medium saucepan, heat the olive oil. Add the onion and salt and sauté on medium low heat until it is soft and lightly golden. Remove the onion to a small plate.
To make the roux, add the butter to the saucepan and melt over medium low or low heat. Add the flour and stir constantly with a wooden spoon or rubber spatula for 2-4 minutes, to make a smooth paste. Stir in the milk, cream, sauteed onion, paprika and pepper. Continue cooking over low or medium low heat until it begins to thicken. Remove from the heat.
Stir in the cheese until smooth, being sure to reserve the amount for topping the dish. Spoon a thin layer of cheese sauce on the bottom of the dish. Layer the potatoes and sauce in the dish, making 4-5 thin layers of potatoes, and topping each with a layer of cheese sauce. Pour the remaining sauce on top after all potatoes have been covered. Sprinkle with half the remaining cheese. And add a dash of nutmeg to the top.
Cover with foil and bake at 375° F for 1 hour. Turn oven up to 400° F. Remove from oven, uncover, and sprinkle with the rest of the cheese and bake for 25 minutes more, until browned. If you prefer the cheese more brown, put under the broiler for 3-5 minutes, watching as to not burn. Add fresh ground pepper to the top and serve.