I use TimeSlice, but that's primarily b/c I started a long time ago and just kept using it. It's fine for what I use it for, which primarily is tracking time spent for just one client. I don't use it for invoicing or keeping track of expenses, though I should probably at least look into those capabilities.
I would look at versiontracker, to see what's out there and what users have to say about the various programs.