If you know the typical MS CRM sales module flow, it starts from Lead and Customers and flows through Opportunity, Quote, Order and Invoice, You might have noticed there are Existing and WriteIn products in Quote/Order/Invoice but no so in Opportunity.
This means we can not define write in products at the opportunity which can be pulled across when quote is generated out of it, and then this quote is subsequently converted to order and then invoice.
There is a supported way to implement WriteIn products functionality in MS CRM, here is the technical approach;
1) Create a custom opportunity-writein-products entity just like quoteproducts,orderproducts entities (The basic difference I found between opportunityproduct and quoteproduct or orderproduct is that the relationship with products is a system required in case of the former while no constraint in the later two.
2) One you have created that custom opportunity-writein-products entity, it shall appear as link in left nav of opportunity entity form, you can create records for this custom entity.
3) After that, when you click on create quote out of the opportunity, a plug-in would read all the records of opportunity-writein-products entity and will create appropriate quote-write-in products which is an existing entity quoteproducts.
4) Once we have got the write-in products from opportunity to quote with the help of such plugin, you can then carry on the normal operation of converting quote to order and the default functionality will pull those quote writein products into order as well.