When I first started working on my themes, I tried to keep the changelog up to date when I made code changes. This makes a lot of sense when you are making small changes from day to day, but can really be the last thing you do when cranking out a lot of code.
I really do a good job of tagging my releases so I’m able to go to GitHub and see the changes between each release. If you don’t use the tagging feature with GitHub, I would suggest looking into it. Some of my friends and coworkers give me some grief for being tag happy, but I don’t care.