You said the Event System, but it might be easier just to pull off with a couple of TBBs:
1) Throw a DateTime.Now on top of the package as the first TBB
2) Throw the time diff as the last TBB and concatenate the
Output item with an XML comment to print the string. (cheesy, but very quick and effective)
This should be good enough for a specific template. Though if you need metrics for all the hundreds of template you may have in the system, then yeah, Event System the way forward.
To do this, I would store a DateTime.Now at the PublishEventArgs Initiated phase, then record it again and calculate the delta at the PublishEventArgs TransactionCommitted/Aborted/InDoubt phases. The question now is where to record your start time and the delta output.
For the start time, I would place this into Context Variables. To output the delta time, I would open a placeholder component (an Article with a text area for instance) and record the time next to the Publish Item's TCM ID). Of course, if you want a pretty report, then store in a custom DB table (or AppData) as an XML and use that as your report's data source.