A 3-regular graph with at most 2 bridges has 1 factor.
Your approach is good - we just have to be a bit more careful with our counting. First off, by counting degrees we can write $$3|S| = a + b + 2c,$$ where $a$ is the number of edges from $S$ to the odd components of $G-S$, $b$ is the number of edges from $G$ to the even components of $G-S$, and $c$ is the number of edges connecting vertices within $S$. What you wrote then gives $$3l -4 \leq a \leq a + b + 2c = 3|S|.$$ We can't have equality everywhere in the above line, since $3|S|$ is divisible by $3$ while $3l - 4$ is not. This means that either $3l - 4 < a$ or $b + 2c > 0$.
Well, if $3l - 4 < a$, then actually $3l - 2 \leq a$, since $a$ is a sum of $l$ odd numbers and hence $a$ and $l$ have the same parity. This gives us $3l - 2 \leq 3|S|$, so $l \leq |S| + \frac{2}{3}$. Similarly, if $b + 2c > 0,$ then actually $b +2c \geq 2$. This is because $b$ is even (why?). Thus we get $3l - 4 \leq 3|S| - 2$, so again $l \leq |S| + \frac{2}{3}$.
But $l$ is an integer, so $l \leq |S| + \frac{2}{3}$ implies that $l \leq |S|$, which is what we wanted to show.