The code samples already provided will get you the looping you need so I won't duplicate that advice. However, I have a few suggestions.
The .Net functionality in WMQ v7.0 is much better than in WMQ v6. Among the options available are that client reconnection can be handled entirely in channel configuration. Since v6 is End-of-Life as of Sept 2011 and this is a new application, I would highly recommend using the WMQ v7 client. You can use it with a v6 QMgr but won't get all the v7 functionality. Preferably you can use a v7 QMgr as well, then you get the reconnection behavior as a configurable option. If you go with v6 now you will need to upgrade to v7 in the next 18 months if you want to be able to get support from IBM.
IBM - MQC7: WebSphere MQ V7.0 Clients http://bit.ly/bXM0q3
Assuming you will proceed with coding reconnection logic, you definitely want to sleep for at least a full second, and preferably several seconds, between reconnection attempts. Failure to do so will flood the WMQ listener and execute a very effective denial of service attack.
Be sure to include the WMQ reason codes in the log messages. For example, if you are trying to put a message on a queue and get back a 2053 MQRC_Q_FULL it is usually a transient error caused by a fast-producer/slow-consumer problem. But if you get back 2035 MQRC_AUTHORIZATION_ERROR then there's no chance of the program recovering without human intervention. If the logged messages do not have the WMQ reason code, it is very difficult to determine the root cause of errors in the transport layer.