You are causing a cast exception. it isn't a bug, but rather you just overlooked something. You are casting a to MegaCtrl but it is defined as Control, and there probably isn't an implicit cast. So your code should look like this:
Control a = Page.LoadControl("~/controls/MegaCtrl.ascx");
MegaCtrl b = (MegaCtrl)a;
Or you could simplify it to one line:
MegaCtrl mc = (MegaCtrl)Page.LoadControl("~/controls/MegaCtrl.ascx");
Cheers,
Kevin Jones