Actually, this is easier than you're making it out to be, and you don't need variable variables, nor arrays.
Assuming $r->work_title is a string containing a year:
for($y=2004; $y<=2010; $y++){
echo "<option ";
if ( ereg($y,$r->work_title) ) echo " selected ";
echo "value='$y'>$y</option>\r\n";
}
If $r->work_title is '2008' the output will be
<option value='2004'>2004</option>
<option value='2005'>2005</option>
<option value='2006'>2006</option>
<option value='2007'>2007</option>
<option selected value='2008'>2008</option>
<option value='2009'>2009</option>
<option value='2010'>2010</option>
Which is what you asked for.
However ... you do need to learn about arrays before getting entangled in any ill-considered variable-naming nightmares in the future.
PHP does support variable variables (see the appropriate section of the manual) but any time you have a collection of similar things, you should use an array with a numeric index (a normal array) or one with strings as the index value (associative arrays). There are many tutorials on the subject; just hit Google.