Who changed the job schedule on a SQL Server Agent Job (SQL 2000)
Without reading the transaction log and/or log backups (which may be impossible, if msdb is set to the default simple recovery), I can't think of any good way.

Going forward, if you want to log the changes, you could create some log tables, and add logging triggers to these tables in msdb.

sysjobs
sysjobsteps
sysjobschedules


I checked those names on 2008, but I seem to recall they have the same names on 2000 (though the structure may differ).