What is preventing hardware manufacturers from creating a device that will allow the user to select their OS? A phone similar to a PC or a mac that can have linux, windows or mac OS installed. Are there any regulations preventing this?
This is largely a business problem -- not a technical problem. I've got an HTC HD2, which originally shipped with Windows Mobile 6.5 (ugh!). I bought it, however, knowing that before it was even available in the US, hackers were already working on porting Android to it. Since then, I've loaded a couple different versions of Android on it, and I know that there are builds for Windows Phone 7, too. At one point, I was booting Windows 6.5 and has the option to launch Android off an image on my SD card -- effectively a dual-boot solution.
Obviously, there are some technical limitations -- there are hardware features in newer phones that mine doesn't support, and so on -- but the ability of this one piece of hardware to run multiple operating systems has been impressive, IMO. As smartphones and their OS's have become more sophisticated, the abstractions between hardware and software have matured as well, which is one of the factors that allow this sort of multiple OS support. It's my understanding that these abstraction layers are what really lay the groundwork for which hosts can run which OS's from a technical standpoint.
As others have indicated, Apple goes to great pains to ensure that their OS is used only on genuine Apple hardware. This is a business decision first and foremost, though it's backed by the understanding that the more liberal they are in terms of hardware that can run iOS, the less control they've got over users' experiences with Apple. The importance of that end-user experience hasn't been lost on other vendors, though, and I think very few vendors would see a whole lot of value in making users' experiences vastly more complicated by allowing them to boot into a variety of OS's.
The closest analog we've seen to that sort of "developer phone" right now was Google's Nexus phone, which was targeted specifically at developers. Even that phone, though, was intended to run Android only, for obvious reasons. Given the existence of emulators running in development IDE's, I suspect that multi-boot phones aren't a huge priority even for vendors wishing to target developers.
In a few words: Software companies' interests and lack of demand.
About the first reason:
Most software companies require that the phone covers some prerequisites, before allowing the vendor to install the OS on the phone. For example, the requirements for Windows Phone 7 can be found on Wikipedia: Windows Phone.
This excludes vendors who make their own software, like RIM (Blackberry) and Apple, but they consider their software as a competitive advantage and are not interested in providing their proprietary OS-es to other vendors.
In general, Android is the least problematic of the main operating systems: you can checkout it, compile and deploy it yourself (minus some proprietary Google Apps that come preinstalled on Android phones).
However, Windows has taken steps to become even more restrictive: Windows 8 for ARM (this is not Windows Phone 8) will not allow the user to install another OS by locking the boot loader
About the second reson:
Almost nobody would want such a phone. It would provide a bad user experience, because of the mashup of different OS-es, different UIs, different apps working on each OS, etc. It would be hard to learn since to use it would require knowledge of all operating systems installed to be utilized fully.
If a vendor tries to do this, the financial results would probably be devastating and the project would be deemed a huge failure.
There's no legal way for a company to acquire licenses to iOS. For example, 'hackintoshes' are in violation of the OS X EULA. Apple doesn't go after individual users because it's not worth it, but, considering how litigious they are, it's hard to imagine them not going after a manufacturer that sold iOS clones. They seem to have legal precedent on their side, too (see the Psystar case).
A practical issue is that it's a lot of work to get drivers working for various devices on phones. Who's going to do the work to write iOS, Symbian, RIM, or Bada drivers for the hardware that's used in the phone? For example, the ICS android update still isn't available for my current phone, six months after the initial alpha build was leaked. The current leaked build is an improvement (it doesn't crash all the time), but the wireless still doesn't work, and even regular voice is somewhat buggy.
I'll focus on smartphones only, because if you include feature phones, then everything gets even more complicated.
Basically there are two kinds of operating systems for mobile devices
Even Android (which everyone can just use and build a phone with) has some restrictions if you want to deliver the non-opensource Google applications with it (and you do want to do that, because otherwise people won't have the full experience, for example the Play Store is part of that suite).
So while one could technically build a phone that could run multiple OSes, it would be almost impossible to convince all OS developers to let you actually run their OS on your device.
Therearen't be any regulations that prohibit this type of hardware from being developed. However, the developers of the mobile OS might not have any incentive to provide OS deployment support. Apple, for instance, prefers a closed ecosystem where their OS is used only on their own devices.
Even for those mobile operating systems where it is easier to port to various device types, such as Android, device manufacturers have a difficult time providing timely updates to users of existing devices.
In short, while users might benefit from this type of device, a lack of vendor support would likely doom this type of hardware to a niche existence.