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.