Change only one cell value on select statement
The following query matches your description from UPDATE 1 (with inline comments showing how it matches) and also yields the correct result for your SQL Fiddle (there is no longer an unwanted row for for the 2015-10-21 sale).

-- (1) Check the sales table if it has any combo with duration=0 for the selected user
DECLARE @finalComboId INT = (
    SELECT TOP 1 s.comboid
    FROM sales s
    JOIN combo c
        ON s.comboid = c.id
        AND c.duration = 0
    WHERE s.username = 'user1'
)

IF (@finalComboId IS NOT NULL)
BEGIN
    SELECT s.username, s.saledate, r.destinationcombo as comboid
    FROM (
        -- (2) If there is a result, then take the most recent combo
        -- (with duration &lt;&gt; 0 and with most recent saledate)
        SELECT TOP 1 c.id AS recent_comboid
        FROM combo c
        JOIN sales sc
            ON sc.comboid = c.id
            AND sc.username = 'user1'
        WHERE c.duration &lt;&gt; 0
        ORDER BY sc.saledate DESC
    ) rc
    -- Find all sales rows from that most recent combo
    -- (The SQL Fiddle has just one, but more generally I assume there could be multiple)
    JOIN sales s
        ON s.comboid = rc.recent_comboid
    -- (3) After finding that combo, than calculate from relation the destinationcombo...
        -- NOTE: I intrepret this as finding all sales rows from that most recent combo
    JOIN related r
        ON r.finalCombo = 3 --...where FinalCombo is the combo found on step 1)
        AND r.sourceCombo = s.comboid --...and sourcecombo is the combo found on step 2).
END
ELSE
    SELECT * FROM sales WHERE username='user1'
GO


However, there are a few things that remain confusing and leave me wondering if I am interpreting the problem correctly:


The sourcecombo field is not used in your example query, but the problem statement indicates that it is important when matching to relation.
Why does the ELSE clause select all rows from sales when the the main body is selecting only the most recent combo?
What if there is more than one combo with duration = 0? There is no guidance in the problem statement about which row should be picked.