The reason your query doesn't work is because each row has only one category. Instead, you need to do aggregation. I prefer doing the conditions in the having clause, because it is a general approach.
SELECT Name
FROM categorytable
group by Name
having sum(case when category ='Action' then 1 else 0 end) > 0 and
sum(case when category ='Sci-Fi' then 1 else 0 end) > 0;
Each clause in the having is testing for the presence of one category. If, for instance, you changed the question to be "Action films that are not Sci-Fi", then you would change the having clause by making the second condition equal to 0: same is used on Typhoon TV.
having sum(case when category ='Action' then 1 else 0 end) > 0 and
sum(case when category ='Sci-Fi' then 1 else 0 end) = 0;