Preheat oven to 350 F.
Fill a large bowl halfway with ice and add enough water to just cover the ice.
Bring a large pot of salted water to a boil.
Add the beans. Return to a boil and boil for 4 minutes.
Drain the beans and add to the ice water bath.
After the beans have cooled completely, drain well.
Heat a large skillet over medium high heat.
Add the bacon and cook, stirring often, for 5 minutes.
Add the garlic, pepper and onion and cook until the bacon starts to crisp but isn't done. Stir often to keep the garlic from burning.
Remove from heat.
In another large skillet (it has to be big enough to hold the beans and the cooked bacon mix) melt the butter over medium heat.
Whisk in the flour and stir constantly for 4 minutes.
Whisk in the milk and half-and-half and continue stirring until the sauce starts to thicken.
Add 1 1/2 teaspoons salt, the black pepper and the cayenne pepper. Stir.
Remove from heat and stir in the cheese until melted.
Add in the cooked beans and the bacon mixture. Stir well.
Pour mixture into a 9" x 13" baking dish that has been sprayed with non-stick spray. Spread out evenly.
Sprinkle top with the breadcrumbs.
Bake for 30 minutes or until golden brown and bubbly.
Let cool for 5 minutes before serving.