• In the past, you can't tell.

    For the future, the usual DML triggers on the msdb job tables can record this information. As always, beware of impersonation (i.e. ORIGINAL_LOGIN() may be useful, plus the usual application name, host name, transaction time, and so on).

    Caveat - it gets messier if you're trying to find the user a SID (such as the owner) belongs to for a change two weeks ago, if the user no longer exists. Unless you have a ton of msdb job changes, it's probably not going to hurt performance much to do the joins to track the sids down even in the trigger.