What you're suggesting is basically the browser signature technique. While it's not necessarily a bad idea, it by no means mitigates all possibilities of session hijacking.
While browser headers generally remain constant for the same user, and are relayed between proxies and gateways, it's not something that can be fundamentally relied upon.
Also, it is possible for two users to have an identical signature, and a proxy may normalise the header values, making the check pointless in some cases. Also, the attacker could just make the user's browser submit a request to their own server, at which point they could capture the header values and manipulate what their browser is sending (a feat which is much easier than it sounds with a bit of social engineering).
Like I say, it's not a bad idea, it just won't improve security as much as it sounds like it might when you first hear the idea. And there's certainly no immediate threat that needs to be patched anyway.