aquien contratrar depende mucho de tu presupuesto, calidad requerida, requisitos de tu proyecto y tiempo estimado en que lo requieres.
Contratar a una empresa te da un respaldo mas solido, puedes tener un trabajo de calidad y mas variado, ya que se suele tener personal especializado en distintas areas, sin embargo los costos suelen ser mucho mas elebados ya que la empresa es un intermediario entre el programador y tu.
Contratar a un Freelance obtendras un trabajo de calidad, costo accesible y tiempos de entrega aceptables, suele ser mas economico que contratar a una empresa ya que el trato es directo sin intermediario, sin embargo si tu proyecto no esta bien planeado y solo vas sacando ideas sobre la marcha puede que en algun punto este no pueda crear todo lo que necesitas y tengas que recurrir a dos o tres freelances especializados en distintas areas.
Otra cosa recomendable es buscar un freelance con referencias y/o que te inspire confianza y nunca pages el 100% del proyecto por anticipado para evitar fraudes.
algunos freelance cobran por ejemplo:
20% anticipo.
40% cuando el proyecto esta a la mitad.
40% al finalizar el proyecto.
o incluso hay quienes no te cobran anticipo dependiendo del proyecto.
si no tienes problemas hablando ingles pudes publicar tu proyecto y recibir ofertas de bastantes freelances, en este sitio
http://bit.ly/c8I4bI