PowerDraw makes sure DoneDevice and Finalize are called when the component is destroyed, i.e. PowerDraw.Destroy, which is called upon PowerDraw.Free() method. Main form's OnDestroy event happends when all form's owned components are released (PowerDraw.Owner = main form), so when you call PowerDraw.Finalize, it no longer exists, so when it accesses its own properties it'd give you Access Violation. In OnDestroy event of your main form you'd free memory and do finalization tasks for anything that was created in run-time or in OnCreate event. Well, at least that's how I understand it, any corrections are welcome

Edit:
It IS possible to do FreeAndNil(PowerDraw), and you're right about Finalize and that's exactly what PowerDraw.Finalize does
If you want to be able to use Finalize on OnDestroy event, you'd create PowerDraw in run-time, in OnCreate event: PowerDraw:= TPowerDraw.Create(nil), and then the following is valid in OnDestroy event:
PowerDraw.Finalize();
PowerDraw.Free();

Edit2:
Indeed the Initialized property of TVTDb was never set to True, just fixed it... still, I think it's good to wait till our new component pack comes out, hopefully it'll be soon

Hope this helps,
Lifepower