You need to add a <br />
element after the text. By default, simple text and images float.
This is what you want to do:
<?php echo "$textvalue"; ?><br />
<img src="images/bar_offpeak.jpg" alt="" width="19" height="<?php echo "$height" ?>%" title="<?php echo "$textvalue" ?>GB" />
Later edit:
My mistake sir, I seem to have forgotten about that part. In this case, one solution is to display each image and text in a div element. This way, you can float the div's any way you want (i.e. display any number of row/columns you want).
So, one item would like so:
<div style="float:left;">
<?php echo "$textvalue"; ?><br />
<img src="images/bar_offpeak.jpg" alt="" width="19" height="<?php echo "$height" ?>%" title="<?php echo "$textvalue" ?>GB" />
</div>
And whenever you want to create a new row, just insert a div like this:
<div style="clear:both;"></div>
This should be a good idea to get you on the right path. But, as Jeroen suggested, you should use a more layout-oriented approach.
Hope this helps. Have a great day: