Do you have indexed the search columns? If not you should do that.
What version of MySQL do you use, it will make a pretty big difference.
If I understand the query you want to get the pictures where all the keywords match, is that right?
Do you use the count or is it just used to select where all the keywords match? I guess that it is the later.
What type of data is bild? If it is an actual picture I don't think it is a good idea to order by it, you probably are better off to order by product_id.
Something like this might help, but I'm not sure.
SELECT bild, product_id // don't return count
FROM `products`
LEFT JOIN kw_t_p ON product_id = p_nr
LEFT JOIN keyword ON kw_id = kw_nr
WHERE (kw_label = 'Barn') OR (kw_label = 'Barnvagn') OR (kw_label = 'Bord') OR (kw_label = 'Båt') OR (kw_label = 'Bänk') OR (kw_label = 'Byggnad') OR (kw_label = 'Bilderna')
GROUP BY product_id
HAVING COUNT(p_nr) >= 7 // changed what to count, hopefully will make some difference
ORDER BY product_id ASC // order by another column
LIMIT 0, 16