Then on top of that: you probably want to try to keep it os and fs-independent which can be tricky.
And like you mentioned: what with images? Maybe you have the rounded-corners, small, thumb, etc. images. Which all add up to diskspace. Same goes for movies: maybe you want users to be able to download the original file and on top of that offer 2 different quality versions....
The project was terminated, so I no longer worry about it, even though I may still try to approach such functionality. Yes, definitely a tricky problem under eZ Publish. As far as images go, I would have probably introduced two modes, calculating the space of either all the resources (including aliases) or just the originals/sources, which also stands a form of control. Let you know if anything happens ;)
You can track the total file size of published items in a separate table, per user. Increase when an object gets published, decrease when an object gets removed. We need a signal / post remove workflow trigger though to be able to track this, which is currently not available in eZ Publish.
Using the new content edit handler validation feature, test on the file size of any supported datatypes (binary file, image, ...) and compare it with the file size of all published items with the same owner: