I don't understand the poster's insistence about wanting to perform an operation similar to git stash in Mercurial "without creating a commit".
Having it as a real commit is an issue when you want to pull upstream for example. My solution would be hg qnew stashname, but I already ranted about the limitations of MQ in another thread here.
Why is it an issue when you want to pull upstream? If you do it, the temp commit will live aside from all the csets pulled from upstream. If you want to resume work on it later, then just update to it. If you want to resume work on it while effectively "merging" its changes with recent upstream changes, then simply rebase the temp commit: hg rebase -s tempcommit -d new-head-pulled-from-upstream. (rebase is a built-in extension.) That's the workflow policy I implemented and it works well. It is also easy to keep track of temp commits: running hg incoming/outgoing will show which changesets are present/absent in one repo compared to whatever other repo you use as a reference.
Having it as a real commit is an issue when you want to pull upstream for example. My solution would be hg qnew stashname, but I already ranted about the limitations of MQ in another thread here.