OK, after digging around all day, here's the solution I found:
========== The Situation ==========
I am developing on my branch "Hotdog"
My co-worker pushed his work to our master branch, including a file named "Hamburgersrule"
I merge master into my Hotdog branch.
My co-worker changes "Hamburgersrule" to "HamburgersRule", and pushes it to master.
========== The Problem ==========
When I try switching between Hotdog and Master, Git thinks some changes have occured. The case of HamburgersRule looks different to Git, but windows thinks it's just fine. Every time I try to merge, or checkout another branch, Git warns me that I will lose my unstaged files.
I can suppress the message by setting git config core.ignorecase true, but the underlying problem is still there, and ignoring case differences is what got us into this mess in the first place.
========== The Solution ==========
1: Do a Triple Rename on Master (to make sure the new file name is correct)
HamburgersRule -> HamburgersRule_Rename -> HamburgersRule
2: Merge that change into Hotdog Branch. To get the merge to work, you will need to delete your version of "Hamburgersrule" (using your OS, not git)
3: Clean up the remaining files on Hotdog. Check to see if the merge worked as expected. You might have to checkout HamburgersRule from the Master branch:
git checkout master HamburgersRule
EDIT:
Important note. If you don't want to keep fixing this problem over and over again, make sure your coworkers all have ignorecase set to false
git config core.ignorecase false
If anyone is ignoring case sensitivity, their git client will ignore the changes, and keep checking in the bad name.