Vous avez juste besoin d'exclure ceux qui sont des amis directs ainsi que des amis d'amis. J'ai réorganisé les alias de table pour que ce soit un peu plus clair (pour moi, en tout cas) ce qui est récupéré :
SELECT
u.*
FROM
user u
INNER JOIN friend ff ON u.user_id = ff.friend_id
INNER JOIN friend f ON ff.user_id = f.friend_id
WHERE
f.user_id = {$user_id}
AND ff.friend_id NOT IN
(SELECT friend_id FROM friend WHERE user_id = {$user_id})
Cela supprime également la nécessité d'exclure l'ID utilisateur interrogé.