This nasty bit of code should do the trick, it uses a group_concat to group non null rows into a single field nd as the unions mean only one column is null for each row, it should work:
select
group_concat(Firstname) as FirstName,
group_concat(Surname) as Surname,
group_concat(Add1) as Add1,
group_concat(Add2) as Add2,
group_concat(Add3) as Add3,
group_concat(Country) as Country,
group_concat(ZipCode) as ZipCode
from
(
select
value as FirstName,
null as Surname,
null as Add1,
null as Add2,
null as Add3,
null as Country,
null as ZipCode
from
wp_wpsc_submited_form_data
where
log_id = '6' // I can't actually see this field in your columns??
and form_id=2
union
select
null as FirstName,
Value as Surname,
null as Add1,
null as Add2,
null as Add3,
null as Country,
null as ZipCode
from
wp_wpsc_submited_form_data
where
log_id = '6'
and form_id=3
union
...
...
...
union
select
null as FirstName,
null as Surname,
null as Add1,
null as Add2,
null as Add3,
null as Country,
Value as ZipCode
from
wp_wpsc_submited_form_data
where
log_id = '6'
and form_id=8
)
Then you should be able to iterate nicely through the rows and do this:
Firstname : <%php echo $CustInfo['FirstName']; ?>
And so on.
I also wrote a length Q&A you might be interested in here: How can an SQL query return data from multiple tables
Edit: I see that the other two folks who answered told you to redesign your table - which I sort of do, but sort of don't agree with.
This table is ruggedly normalized, which means you can add a hundred extra form fields and not have to touch the table itself - that's a (amazingly) good thing. I would say that this design is making it harder for you to get this particuar data out, but it very robust - if not amazingly quick or easy to access.