Yeah, the "F2" format only works if you have something which is already a number.
I'd try the following instead which also deals with the possibility that the element could be blank or contain an invalid number (it then uses zero instead):
var valuation = from match in xmlDoc.Descendants("match")
select new
{
retail = match.Element("retail").Value,
trade = match.Element("trade").Value,
average = match.Element("average").Value,
firstnew = match.Element("new").Value,
};
foreach (var match in valuation)
{
decimal temp;
decimal.TryParse(match.retail, out temp);
value_retailTextBox.Text = temp.ToString("F2");
value_tradeTextBox.Text = match.trade;
value_averageTextBox.Text = match.average;
value_newTextBox.Text = match.firstnew;
}