Video demonstration: YouTube clip
----------------------------------------------------------------------------------
Update:
There are now two versions in the .zip file:
ds_cycleoffset.lua - The script in the video.
ds_cycleoffsetalt.lua - This script supports locked bones and has some other changes.

Instead of using cycle keyframes you enter the frame range you want looped. Keyframes will be copied for all bones if used on a bone layer.
I prefer this latest version, especially since it's now possible to use walks with locked bones, but I've included the old version as well.