Since assistants are just normal Framework or business object level command handlers they can be started from many different places directly by end-users:
How and when they appear in these situations is definable by the Framework designer.
Programmatically you can also start an assistant by using the normal Switch operation.