Q:

Creating a custom field from a SOQL query

We have a custom Object and our Opportunity objects have a Lookup field to the Object. However, when we go to add a Roll-up field to Object that shows the total Opportunities attached to the Object, Opportunity is not an option to use for a Roll-up field.
I am thinking that I will have to write a custom Apex class that gets the information from a Soql query. Is it possible to create a custom field that is based on the Apex class to display the output of a query like:
SELECT COUNT(Id), Object_Name__c
FROM Opportunity
WHERE Object_Name__c = ''
Or what would be the proper way to get this to show up as a field in our custom Object?

A:

Rollup's are possible only in a master detail scenario, in your case you say the custom object is a lookup from Oppty.Oppty can never be the child 
http://www.salesforce.com/us/developer/docs/api/Content/relationships_among_objects.htm

You can define master-detail relationships between custom objects or
  between a custom object and a standard object. However, the standard
  object cannot be on the detail side of a relationship with a custom
  object. In addition, you cannot create a master-detail relationship in
  which the User or Lead objects are the master.

check this on how to make rollup'sish feature possible with some APEX code:
http://blog.jeffdouglas.com/2009/07/30/roll-up-summary-fields-with-lookup-relationships-part-1/
(OR)
Create a button on Oppty and use ajax toolkit : 
{!REQUIRESCRIPT("/soap/ajax/22.0/connection.js")}
var cust_related_to_oppty = sforce.connection.query("Select id,Number_field__c from custom_object__c WHERE Opportunity__c = '{!Opportunity.Id}'");
var sum_of_numbers_in_custom = 0;
var total_custom_objects = 0;
var records = cust_related_to_oppty.getArray("records");
 for (var i=0; i< records.length; i++) {
    var record = records[i];
//assume you want to calculate sum of a number field in custom object,gives you sum.
    sum_of_numbers_in_custom = +sum_of_numbers_in_custom + +record.Number_field__c;
//gives you count of childern  
 total_custom_objects = records.length;
}
alert(sum_of_numbers_in_custom);
alert(total_custom_objects);

Go here and build your sforce.connection.update method that will update the oppty once you create a field that will be a holder for the sum of / count of alert that you have on the screen now.
http://www.salesforce.com/us/developer/docs/ajax/Content/sforce_api_ajax_more_samples.htm

