There is one thing that is ALMOST certain in programming: Whatever you do to test something will probably work, but whatever you haven't tested will fail when you give it to a customer.
Use of virtual machines will help to some degree to avoid having to buy unusual hardware, as does things like QEMU.
Unless your program is either REALLY trivial, or you want to use your customers [1] as guinea-pigs, you are best off testing on every platform-type that you want to release for. If you don't, it WILL come back and bite you at some point.
If you don't, you run the risk of some of your customers gets an "unhappy experience". An unhappy customer tells ten people, a happy customer tells maybe one person.
If you wish to support architectures/stuff that you don't have access to, maybe just having a "help yourself" option of source-code is a better choice than downloadable binaries.
Of course, you can rent time/space on servers of various kinds - I looked into writing an iPhone app, and there are places that run Mac's as virtual machines on the net that you can rent for around US$ 15 per month, for example.
[1] Throughout this answer, by customer, I mean anyone that downloads your software, regardless of whether they actually give some money to anyone, they will have spent some effort to get your software on their machine. If it doesn't work, then they will be unhappy to some degree. How unhappy depends on a number of things, including how clear you made it that "this may not work" if you were to publish "untested" software.