This is a tough one, since as you said, it really depends on two main factors:
- Amount of page loads (traditional or virtual)
- Amount of custom non-pageview events (such as download or exit links, button clicks and so on)
If we have the page view amount assumed, my personal method is something like this (this assumes we don't have Analytics already setup, if we do, it's easier to be accurate):
- Take amount of current (average per month for 6 months or so if possible) pageviews
- If the site has downloads and there is an estimate how many are triggered per month
- Exit links is a bit more difficult, depends a lot. Often times if this is not common for the content to link to outside sources, I usually skip this
- If there are custom in-page events (so events tracked as non-pageviews), such as button clicks, I get the amount of these actions triggered
After all this I usually add 20% to account for growth and changes in requirements. Note that if there is growth expectations, we can increase the estimated growth %.