I have just pulled all incoming changes, committed everything, even pushed all my commits and even then the Update button is grayed out in Update Working directory window if I don't check the "Discard local changes, no backup" checkbox. Last time I did that, I lost all my work compared to the latest remote working directory.
Is it normal that that checkbox should always be checked or not? If not, then why is it like that in my TortoiseHg?
The behavior you are describing is what I get when I right-click on the changeset that is the parent of my Working Directory and try to update. Since the difference between my Working Directory and that parent is only my local changes, Update would do nothing unless I was going to discard the local changes.
If you are seeing that behavior when trying to update to other changesets farther back in the repo's history, you may have an issue. What version(s) are you using?
(Full disclosure: I have THg 2.4.1, hg 2.2.2, python 2.6.6, which are not the current versions, but I typically use hg from the console window.)