Peel and cut the potatoes into 1/2-3/4 inch cubes. Place them in a large pot of salted, cold water and bring to a boil. Reduce the heat to medium-low and simmer for 5-10 minutes or until slightly softened. Drain and set aside.
Preheat the oven to 350 degrees Fahrenheit. Grease a 1.5-quart baking dish with cooking spray or butter.
Melt 3 tablespoons of butter in a large skillet over medium heat. Add the ham and onion and cook for 5 minutes, stirring regularly, or until the onion is tender. Stir in the potatoes, then pour the mixture into the greased baking dish. Set aside.
Melt 1/4 cup of butter in the same skillet over medium heat. Whisk in the flour until smooth and reduce the heat to medium-low. Gradually whisk in the milk and season with salt and pepper. Continue whisking for 2 minutes or until the mixture turns into a thick sauce.
Reduce the heat to medium-low and stir in the cheddar cheese until melted. Then, pour the white sauce over the ham and potato mixture. Sprinkle the breadcrumbs evenly over the sauce.
Cover and bake for 25 to 30 minutes, remove the foil, and bake again for 5-10 minutes, until the sauce is browned and bubbly. Let the dish cool for 5-10 minutes, then serve and enjoy!