I have a pull request in xmonad-contrib that adds two new features to XMonad.Actions.CycleRecentWS and I'm hoping to get it reviewed.
The first feature is the ability to cycle through non-empty workspaces, or more generally, the ability to apply a user-provided predicate to the list of workspaces included in the cycle.
The second feature is the ability to toggle back and forth between the current and most recent workspace. It's essentially a special case of cycling, but with simpler keyboard behavior -- repeated key presses toggle back and forth regardless of whether a modifier key has been released or not.
There's not a whole lot to it, but it was fun to put together.