One option which I like is to just make a formal temporary commit on the branch in question, e.g.
# work work work
git commit -m 'Completed the feature'
Now you can switch to another branch and continue from there. When it comes time to return to the original branch, you can finish the feature and amend the temporary commit:
git checkout original_branch
# finish the work
git commit --amend
Now you are left with just a single commit, and you were able to do a hotfix somewhere else.
Note that git stash
internally actually makes a commit (2 or 3 of them, actually) to save the state of your working directory and index.
Read the lengthy answer about git stash by @torek by following the link.