Il float funziona solo con oggetti che ci stanno sulla riga.
Se il secondo oggetto e` piu` largo (o si espande in modo da essere piu` largo) dello spazio a disposizione, va a capo.

Dato che il secondo oggetto contiene del testo, e` facile che questo si espanda oltre lo spazio.

Comunque nella descrizione ci sono errori semantici.
Il testo va inserito in un tag <p>, non direttametne in un <div>
E a questo punto il div interno potrebbe contenere:
codice:
...
  <div class="articolo">
    <img id="..." alt="..." />
    <p> qui il testo relativo </p>
  </div>
con CSS del tipo:
codice:
.articolo {
  width: ...;
}
.articolo img {
  float: right;
  max-width: 200px;   /* valore da definire */
}
.articolo p {
  float: right;
  margin-right: 201px;   /* uguale o maggiore di quello sopra */
}