The first step is correct, but the second step is not: You cannot say anything about the kernel after tensoring. Also note that your second step is purely formal and would apply to every additive functor which preserves epis. But not every such functor is right exact.
Let $M_1 \to M_2 \to M_3 \to 0$ be an exact sequence. We want to show that, for every module $N$, the sequence $M_1 \otimes N \to M_2 \otimes N \to M_3 \otimes N \to 0$ is exact, i.e. that $M_2 \otimes N \to M_3 \otimes N$ is a cokernel of $M_1 \otimes N \to M_2 \otimes N$. This means, by the universal property of the cokernel, that for every "test" module $T$, the sequence $0 \to \hom(M_3 \otimes N,T) \to \hom(M_2 \otimes N,T) \to \hom(M_1 \otimes N,T)$ is exact (as abelian groups, but then also as modules). By definition of the tensor product, this sequence is isomorphic to the sequence $0 \to \mathrm{Bilin}(M_3,N;T) \to \mathrm{Bilin}(M_2,N;T) \to \mathrm{Bilin}(M_1,N;T)$. $(\star)$
Thus, the claim is actually equivalent to a statement about bilinear maps. And this can be checked now directly. I will leave out the trivial steps. For the only interesting one, let $\beta : M_2 \times N \to T$ be a bilinear map which vanishes on $M_1 \times N$. Define $\gamma : M_3 \times N \to T$ as follows: If $m_3 \in M_3$, $n \in N$, choose a preimage $m_2 \in M_2$ of $m_3$ and define $\gamma(m_3,n):=\beta(m_2,n)$. This is well-defined, because every other choice of $m_2$ is of the form $m_2+x$ for some $x$ coming from $M_1$, and then $\beta(m_2+x,n)=\beta(m_2,n)+\beta(x,n)=\beta(m_2,n)$. One sees directly that $\gamma$ is bilinear because $\beta$ is. And course $\gamma$ is the desired preimage in $\mathrm{Bilin}(M_3,N;T)$.
This is not the most conceptual proof. You have already mentioned the one using adjoint functors. But we can also choose an alternative ending for the proof above: The sequence $(\star)$ is isomorphic to $0 \to \hom(N,\hom(M_3,T)) \to \hom(N,\hom(M_2,T)) \to \hom(N,\hom(M_1,T))$, which is exact because $\hom(N,-)$ is left exact and $\hom(-,T)$ is right exact.
And yet another ending (which explains Qiaochu's comment): The isomorphism $\mathrm{Bilin}(-,N;T) \cong \hom(-,\hom(N,T))$ shows that this functor is representable and therefore right exact, hence $(\star)$ is exact.
Best Answer
Composing by $g$ on the left, it follows $(g \circ \psi-id) \circ g=0$. As $g$ is onto, we get $g \circ \psi=id$, ie $\psi$ is a section. Similarly, $\phi \circ f=id$.
We have morphisms $\alpha=(\phi,g): M_1 \rightarrow M_2 \times M_3$ and $\beta=f \oplus \psi: M_2 \times M_3 \rightarrow M_1$ with $\beta \circ \alpha=id$. Let $x \in M_2,y \in M_3$ be such that $\beta(x,y)=0$. Then $f(x)=-\psi(y)$. So $-y=-g \circ \psi(y)=g \circ f(x)=0$. So $y=0$ so $f(x)=0$ so $x=0$ and $\beta$ is injective.
Thus $\alpha$ and $\beta$ are inverse isomorphisms.