Peel and dice the onion; peel and mince the garlic; dice the ham; peel and de-vein the shrimp. Heat the butter over medium heat in a large skillet then stir in the onion, garlic, and ham. Cook these ingredients until the onions are translucent but not browned then stir in the flour. Cook the flour for a few minutes over medium heat, stirring almost constantly. Whisk in the milk, making sure there are no lumps. Bring the milk to a boil--it will thicken--then lower it to a simmer. Cook the sauce for about 5 minutes then stir in the cheddar and Parmesan cheese. Season the sauce with salt and pepper. Once the cheese has melted into the sauce, stir in the shrimp and remove the pan from the heat. Boil the pasta, drain it thoroughly, and then add it to the sauce. Stir the pasta, making sure the ingredients are evenly distributed. Lightly butter a casserole dish or oven-proof skillet that is just big enough to hold everything. Transfer the macaroni to the dish or skillet and dust its surface with breadcrumbs. Place the pan in a preheated 375 degree oven and bake it for about 25 minutes, or until it is bubbling and the surface has begun to brown.