To check if a Mac OS X app has been launched at login, I use this code:
BOOL autolaunched = ([[[NSProcessInfo processInfo] arguments] count]);
The number of arguments returned by [NSProcessInfo processInfo] is not documented to be different in case of an auto-launch, compared to a user-initiated launch, but it works.
Update July 30, 2012: The approach described above doesn’t work anymore with OS X 10.8 or later. For an alternative approach please see my Detecting Launch At Login Revisited blog post.