1. You cannot recover a private key from a public key. If you are concerned about users losing their private key, you may want to consider offering them an encrypted backup service, where their private key is encrypted by some password (on their client) and then uploaded to your servers for safekeeping. That way they can recover their private key if they remember their password.
2. Yes, you could deterministically generate a private key from some user details, or any string of data. The technique is called a "brain wallet" and you can find much information and source code relating to this from the bitcoin world. See also
https://www.bitaddress.org/ which gives you an example. But you should be very cautious about this because, if someone else can guess the input data, they can also calculate the private key.