I'm trying to checkout a branch and I'm unable to do so because I keep being told that there are some files that are going to be overwritten and then I'm later told that I don't have permission...
It's a ball of snot.
Here's the situation...
First of all, here's my status:

The "Changes not staged for commit" aren't relevant to the work I've been doing, neither is the file that's referenced as "untracked."
If I try to checkout another branch, I get this:
b.gust@AHA-DT-BGUST2 MINGW64 /c/wamp64/www/bsmart (code-cleanup)
$ git checkout final-activity-stream
error: Your local changes to the following files would be overwritten by checkout:
bin/start.sh
Please commit your changes or stash them before you switch branches.
error: The following untracked working tree files would be overwritten by checkout:
.vs/slnx.sqlite
Please move or remove them before you switch branches.
Aborting
At this point, these files haven't been added or staged, correct? What I'm seeing is indicative of the files having been modified, but they've not been added let alone committed.
What do I need to do?
I can't add them:
error: open("bin/start.sh"): Permission denied
error: unable to index file 'bin/start.sh'
fatal: updating files failed
I've looked at reset and I get a permission denied.
I'm stuck.
What do I need to do?
In Git, you have a working copy - these are the files that you're currently working on. When you make changes, add files, delete files etc, you 'dirty' your working copy. In order to switch branches you need a clean working copy - you get this by committing your changes to the branch your on. If you can't do that (or don't want to do that), then you can 'stash' your changes. This is like a temporary save of any modified file - it puts them in a temporary storage areas and gives you a clean working copy. You then then switch branches as there are no longer changes on your current branch. You can later apply that stash (to any branch) if you need to pull those changes back.