You can create the controller extension method where you can define one property contains the contacts of your current custom object contact matching id and there you can show all the fields using simple apex:pageBlock section
like this
Visual Force page code
<apex:page standardController="customObjectName" extension="yourExtensionclass">
<apex:pageBlockSection value="{!contact}" columns="2" >
<!---Here you can populate all the required field as per your requirement as aq input field or output field -->
<apex:inputField id="contactname" value="{!contact.Name}" label="Contact Name"/>
</apex:PageBlockSection>
<!--Here you can place your other designed code -->
<apex:page>
Your Custom extension contoller class will be look like this
public class yourExtensionclass
{
public final CustomObject customobject {get;private set;}
//List will hold all your contact related information
public Contact contact{get;set;}
private ApexPages.StandardController mycontroller;
public yourExtensionclass(ApexPages.StandardController controller)
{
customobject=(customobjectclassname)controller.getRecord();
//Here you will get your lookup contact id
//By getting customobject.contact field
List<Contact> contacts=new List<Contacts>();
contacts=Database.query('Select Id,Name from contacts where id=\''+ customobject.contactfield + '\'\);
if(!contacts.IsEmpty())
{
contact= contacts.get(0);
}
}
}
Here customObjectName is the your custom controller name
I had created contact object and used in visual force page. Hope it clearly solves your problem.