can a multithreaded solution using multiple user-level threads achieve better performance on a multiprocessor system than on a single-processor system?
It depends on the program but frequently yes. That's the reason for multi-threading.
Hmm... "user-level" threads? What exactly does that mean? If it means a library that lets you create multiple instruction streams that are switched via code in the program itself, then no. But if you're using multi-threading supported by the operating system then yes, EVEN if you're on a single-core system it can benefit because the OS can run one thread while the other is blocked for I/O or other reasons.