The simplest is probably:
filter(row -> all(x -> !(x isa Number && isnan(x)), row), df)
You can also write:
subset(df, (names(df) .=> ByRow(x -> !(x isa Number && isnan(x))))...)
Note that names(df, Union{Float64, Missing}) is not fully correct, as your column could have e.g. Any type and still contain NaN.