Tracking issues in github (and we use FogBugz as well) has the benefit of being where the "rubber meets the road", so it's effortless and transparent to keep up to date. Merging non-code tasks (e.g. design work) with code is still something we struggle to track and keep tabs on.
To be clear: while I can describe the problem, I honestly don't have any ideas what the most elegant or clean solution is. I have never found a satisfactory solution. I end up keeping lots of stuff in my head and writing summary emails.
I'm surprised no one has built a better way to do this. We tried syncing with Zapier first (a company I absolutely love), but if I recall correctly it was a one-way sync, and we needed it to go both ways.