I recently ran into the same problem (wanting to diff 2 files, but I always wanted to diff my workspace revision against some revision in the past).
The big challenge was that the only way to be able to specify what files I wanted was by using p4 or p4v commands. The p4v commands would not accept 2 arguments for the diff operations, and even when you did specify a revision, it would only diff that revision against the next revision, not the current one.
p4 diff would diff the revision specified against my workspace version, but the problem was that the output was only text based.
While reading the documentation (http://www.perforce.com/perforce/doc.current/manuals/cmdref/diff.html#1040665) I came across this line:
By default, the diff routine used is the one built into the p4 command-line application. To change this diff routine to an external diff program, set the P4DIFF environment variable to point to the new program.
(for more info see http://www.perforce.com/perforce/doc.current/manuals/cmdref/env.P4DIFF.html#1040647)
So on a hunch I decided to point that environment variable to my WinMerge directory. Surprisingly enough, it worked!
Then I thought, can I point this to the p4merge client, and that works as well. The only (very livable) limitation, is that the previous version shows up as a temp file instead of .