Indication Séparer les cas où $|f|$ tend vers 0 du cas où la limite est non-nulle. Dans le second cas, si f ne converge ni vers l, ni vers -l, le théorème des valeurs intermédiaires et l'hypothèse vont assurer que f s'annule : impossible!
Corrigé Notons $l$ la limite de $|f|$ en $+\infty$. On distingue deux cas. D'une part, si $l=0$, alors on va prouver que $f$ tend aussi vers $0$ en $+\infty$. C'est assez facile. En effet,
$$|f(x)-0|=|f(x)|\to 0\textrm{ quand }x\to +\infty.$$
On suppose maintenant que $l$ est non-nul, c'est-à-dire $l>0$. Ce cas est nettement plus difficile. On va prouver que $f$ converge vers $l$ ou que $f$ converge vers $-l$. Prenons $\veps>0$, supposons le tel que $\veps<l/2$, et écrivons que $|f|$ converge vers $l$ en $+\infty$. Il existe donc
$A>0$ tel que, pour tout $x\geq A$,
$$ l-\veps<|f(x)|<l+\veps.$$
En particulier, pour $x\geq A$, on a
$$-l-\veps<f(x)<-l+\veps\textrm{ ou }l-\veps<f(x)<l+\veps.$$
Si on est toujours dans le premier cas, on a gagné ($f(x)$ tend vers $-l$ quand $x$ tend vers $+\infty$), et si on est toujours dans le deuxième cas, aussi. Sinon, il existe $x_1>A$ et il existe $x_2>A$ tel que
$$-l-\veps<f(x_1)<-l+\veps\textrm{ et }l-\veps<f(x_2)<l+\veps.$$
En particulier, comme on a choisi $\veps$ assez petit, on a
$$f(x_1)<0\textrm{ et }f(x_2)>0.$$
On peut alors appliquer le théorème des valeurs intermédiaires à $f$ entre $x_1$ et $x_2$ pour trouver $x_3>A$ tel que $f(x_3)=0$. Mais ceci contredit que, pour tout $x\geq A$,
$$ l-\veps<|f(x)|<l+\veps.$$
C'est donc qu'on est ou bien toujours dans le premier cas, ou bien toujours dans le deuxième cas.
On pourra, à titre d'entraînement, vérifier que le résultat reste vrai si $\lim_{x\to+\infty}|f(x)|=+\infty$.