I'm not sure how much your post is actually about asp.net MVC.
Your first question is how to secure the app so that only recognized iPhones can access the GET/POST methods. This sounds more like an HTTP question and I guess it depends on your definition of "secure" and what you're trying for. You could potentially send the license key (over HTTPS I would assume) from the iPhone and authenticate that. However, there's nothing stopping someone from sharing this key or using it from a non-iPhone. You could create a hash or something on registration and then validate against that (think Windows validation), which might help, but there will always be ways around this. In short, you're not going to be able to truly test against "registered iPhones", but rather something that you define as a "registered iPhone" which could potentially be spoofed but is "good enough" for your needs.
In MVC, validation should be done at the Attribute level -- you would decorate your Actions with some sort of validation attribute. The built in one is called Authorize and works with the built in ASP.NET Membership. It doesn't sound like that's what you would want to use, so you might want to build your own attribute to validate the HTTP request yourself.
In regards to using a shared hosting account, I'm not sure the question. Are you asking if a shared hosting account will work for your needs? I don't know your needs, but shared hosting can certainly accommodate 1) ASP.NET MVC, and 2) SQL Databases.