Melt 2 tablespoons of butter in a medium skillet over medium heat. Add the onion and cook for 6 to 8 minutes, until very soft. Reduce the heat to low and cook for another 20 to 25 minutes, until the onions are golden and caramelized. Remove from the heat and stir in the barbecue sauce.
Place a large griddle over medium heat. Meanwhile, place the bread slices on a clean work surface. Spread the remaining 2 tablespoons of butter over one side of each slice of bread. Place half of the bread slices, buttered side down, on the work surface. Divide the cheeses and caramelized onions between the sandwiches, then place the remaining slices of bread on top, buttered side up.
Grill the sandwiches for 3 to 5 minutes per side, until the bread is golden brown and the cheese is melted.