I figured out a method for opening a GUI program as a user who is not the "switched in" user, i.e. a user who is logged in, but someone else has fast user switched to another account. This also works for opening a GUI program over ssh, which is not possible for non-console users. Assume the user's name is "foo." Fast Switch to user "foo" and open Terminal.app. Then type screen and hit Enter.
This starts a unix shell that is independent from the Terminal.app window, and can be attached to any other logged in shell, even over ssh. Then Fast Switch to another user, and ssh into your computer mycomputer as user foo:
ssh foo@mycomputer
Note that if you are doing this on mycomputer that you should use ssh not su, since screen cannot write to the tty if it is owned by another user. Now you can reattach to the screen:
screen -x
The same shell that you saw after typing the initial screen shows up. But since we started that screen as the GUI logged in user, it has the same privileges as being a GUI user typing in Terminal.app. Thus we can open, say, TextEdit.app:
open /Applications/TextEdit.app
I haven't tested this out much, but one particular use is it makes it easy to start up iTunes as a specific user, and access the shared music, without worrying if that user is Switched in.
Mac OS X Hints
http://hints.macworld.com/article.php?story=20040402224708186