Why does my launchd script not run at login?
This is a deeply unsatisfying answer, but I got it to work by running /System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine -background &amp; in a subshell. I changed login.sh to...

#!/bin/bash
longname=$0
shortname=$(basename "${longname}")
echo "$(date -u "+%Y-%m-%d %H:%M:%S") ${shortname} (${longname}) running..."
output=$(/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine -background)    # &lt;- COMMAND GOES HERE            
echo "$(date -u "+%Y-%m-%d %H:%M:%S") ${shortname} ended."


...and that works (my usual static desktop changes to my default screensaver). I use this idiom for other launchd tasks, running the tasks in a subshell so I can easily test whether the operation succeeded and log $output. I don't understand why this works while your original doesn't, but at least it does work.

Note that I removed the &amp; from the end of your command - I'm not convinced this is necessary with launchd, and it was preventing my wrapper script from logging that it had ended (though the &amp; wasn't the cause of the original problem).