IRP without associated process/thread

Can a IRP be issued without an associated thread/process to it? If yes, how?

Sure.

By way of example but not limitation, just call IoAllocateIrp and don't set the thread field.

Can it also be done from user-mode?

No. All the standard I/O system services are going to set the Tail.Overlay.Thread field in the IRP.