I wrote a metronome using wxwidgets and FMOD. It uses buffered dc to animate an arrow (like a real metronome!) and paintdc to draw a simple skinnable interface. You can customize the sound you want for every single beat, subdivide every beat in duplets or triplets, of course you can change tempo and time signature, add your own sounds (lots of format supported through FMOD) and your own images to draw in the background (like a simple skin). It should use the most precise timer for your system (the wxWidgets timer on unix and the multimedia timer on windows). It uses a config.xml file (using wxXml to read it) than you can modify to further customize it.
You can download it here: http://liveformusic.sourceforge.net/download
Source code available under GPL version 3. The sources contain also a libopentime library which contains different implementations of chronometers and timers for various platforms (mainly windows and unix, but also using standard functions) exposed by a common interface consisting of virtual classes.
Please tell me you opinions (and critics of course)