Ahh, another good topic to catch up on! =)
I believe we explored how this should work some time back, but not too deeply. This entire category of discussion falls under scenarios, triggers, scripting, etc. I strongly encourage no quick action and instead, careful analysis of the requirements -- that is, what will fulfill the greatest number of needs with the most eloquent design. Let me summarize.
First, to make campaigns work correctly, we'll need a way to persist player data between scenarios. Most games do this by having you create a player profile and then selecting which player profile you're going to use when you start playing. Many (perhaps most) campaigns will want to store variables from one scenario to the next, based upon decisions you've made, units that survived, etc. So first is the concept of a player profile.
Within each player profile, campaign data will be stored in separate files (or directories if need be) for each campaign. Each campaign should also be able to specify a pre and post scenario UI (via whatever GUI library we end up with). This UI will need to be interactive may involve character generation (at the start of the campaign) or other choices the player will make. Perhaps it will allow them to "go shopping" between scenarios, etc. This should be possible entirely via XML (or whatever the GUI library takes as input), images, sounds, etc. and Lua script (all as part of the campaign's data).
Next, each scenario will need to be scriptable to the extent of "cut scenes", as described in this thread. I'm thinking that this should be possible via custom UI components specified via the scenario and then using Lua triggers to display those UI components, manipulate their text and play audio files.
So those are my thoughts, and yea, that's a bit of a longer term goal and definitely will require the GUI. But at least we finally have the 3.2.2 merge thanks to silnarm! =)