Is this query supposed to be slow?
Yes, it is supposed to be slow. Why? 


There are multiple subqueries:

3 levels of nested derived tables
7 inline correlated subqueries that each join to a different table, using the userid which as you say is not indexed. One of the subqueries has a further nested derived table in its FROM clause.

There are WHERE conditios on un-indexed columns
There is an ORDER BY clause - it always adds one more operation
There is a DISTINCT quantifier - filtering out duplicates is a costly operation
There are some calculations being made


It really looks very bizarre. I guess it can be rewritten to a neat form using JOINs and it would run much faster. You would have to post the database structure and the result you want to achieve.