Once you've made your changes to your commit, your tree will look something like this:
(A) - (B) - (C) - (D) \ (B')
What you need to do it rebase your changes C & D onto your change B'. You can do that easily.
git rebase B' D
That will make it look like
(A) - (B) - (C) - (D)
UPDATE:
Just to make this more clear. You should follow the OP steps up git commit --amend then do what I mentioned. So your entire workflow looks like this
git checkout B <make changes> git commit --amend git rebase B' D
UPDATE 2:
@gtrig made a good point in another answer. This is rewriting history, so if you've already pushed to another repository (or someone else has pulled from you), this is a very bad idea and you should use git revert instead to make a new change that backs out the previous one. This will make your history more ugly, but it won't mess up everyone else's repository. This is only for local changes before they are pushed remotely.