I'm chanelling a response from an electrical engineer friend who works in a related area:
The thing he's trying to do is to match the beats and you can't just use zero crossing algorithms or "averages"... The code from the the Sethares paper mentioned (above) works pretty well, but it's in matlab, which means that it doesn't work in real time (because matlab has no real-time processing capabilities, not because the algorithm is inherently noncausal). So I'm doubtful whether it would be of any immediate use to the questioner.
There are some commercial products that are starting to appear, which mostly work by assuming that there is a steady drum beat underlying the music (this makes the problem a lot easier -- for instance, if you know there is a bass drum that regularly hits on 1 and 3, you can synchronize to it). So here it would depend on what style of music he is working with.
From his response it sounds like if you're sticking to something like electronic dance music then there are readily-available commercial products (I find some by googling). But if you're trying to automate beat-matching of Indonesian gamelan music to an acoustic guitar solo, you'd have more troubles.
edit: The Sethares paper provides routines but it also provides a reference to the beat-tracking literature. If your main interest is to have a convienient way to beat-track, it would seem like the best thing to do would be to avoid real-time computations. Precompute the relevant data using an algorithm like the ones Sethares (and all) propose. Store that information beside your music so that you'd have all the information available and not need any further computations or fancy hardware.