Let the query run, no matter how long it takes, and make sure you have all your items.
You might also try running the exact same query in phpMyAdmin to compare, the newest version tells how long the query took.
If you stop the process and see in source code fromthe browser that the it basically "stopped" at the dropdown list (never finishing with the </select> tag), but the items you have so far are the same as the full list's, then your code is executing right.
If the list is the same each time, albeit slow, there's nothing wrong with your query.
Make sure you have proper indexes on the table.
Also, to see the query happen and spill data real-time, consider temporarily removing the <se.ect></select> tags, and instead of <option> just output the string with a <br>, that way you can watch the output as it happens.
Server issues, load issues, a number of things, and unfortunately you'll have to troubleshoot each of those possibilities.
Then good news is that you'll learn something in the process :-)
Sam Fullman