Hi Tony,
Very good question - I'm by no means an expert in ITIL but here are my thoughts. When talking about an IT service that is already in production, I think costs can be broken down into two main categories: people and hardware. People costs can be further broken down into support (helpdesk), training and software maintenance (for bug fixes, patching of systems, etc. Changes to functionality should fall outside of the scope of these costs).
For a given set of hardware (cluster of computers to perform DB work, web hosting, etc.) and Service Level Agreements (availability, uptime, etc.), an IT shop should be able to estimate per CPU cycle costs based on factors such as on-call staff required to maintain SLAs, hardware failure estimation and replacement costs and the like. Similarly, each type of person involvement beyond hardware should also be able to be broken down on a per-event basis (e.g. cost per helpdesk call, cost per bug fix, cost per training per user).
If an IT shop does not want to charge a flat rate, then they can use these actual cost values to charge on a usage basis. This adds variability to the business' budget (something they would not like), but also will get them to find and ask for ways to keep costs lower (for instance, having a good FAQ/knowledgebase for users to check prior to calling the helpdesk, or running a batch reporting job more often than is necessary). I think the per-use cost basis is the most appropriate, and it's how more outsourcing companies are starting to charge their customers.