Start by cooking down your onions. To a medium sized skillet, add in the oil and bring to medium-low heat. Toss in all of the onions. Season with a pinch of salt, stir, and cook for about 30 minutes, stirring along the way. Low and slow is the key. During this time, cook your bacon. Again, go with another large skillet, medium-low heat, and let the bacon cook until crisp, flipping them from time to time. Reserve the bacon grease for later use and strain the bacon on some paper towel until ready to serve.
Your onions should be ready. The bacon is ready. The question is, are you ready? This is where things get exciting (well, the smell of bacon and onions are exciting).
Wipe out the bacon skillet and return it to a medium-low heat. Butter one side of each piece of bread.
Place a slice of bread, butter side down onto the skillet. If you are using mustard (I prefer), add it to the bottom slice. Add cheese slices to the bread, then load on the onions, top with the sliced bacon, add the remaining cheese slices to cover, and top with the other slice of bread, butter side up.
Let this cook, untouched on medium-low heat for about 3-5 minutes, then light the bottom gently and make sure you get a good crust. You want that crunch. That buttery crust. Once nicely browned, gently flip over and toast the other side.