Preheat oven to 350°F. Coat inside of a large casserole dish with cooking spray or oil.
Melt butter in a large saucepan over low heat; stir in flour, salt and pepper until smooth.
Gradually add milk and cream; bring to a bubbly boil; cook ~2 minutes until thickened; stirring continuously.
Remove from heat; stir in cheese, potatoes and onion.
Cover and bake 1 hour; uncover and bake ~40 minutes more, until potatoes and sauce begin to brown on top.