Q:

Read from a socket without the associated memcpy from kernel space to user space

In Linux, is there a way to read from a socket while avoiding the implicit memcpy of the data from kernel space to user space? 
That is, instead of doing
ssize_t n = read(socket_fd, buffer, count);

which obviously requires the kernel to do a memcpy from the network buffer into my supplied buffer, I would do something like
ssize_t n = fancy_read(socket_fd, &buffer, count);

and on return have buffer pointing to non memcpy()'ed data received from the network. 

A:

Initially I thought AF_PACKET option to socket family can be of help, but it cannot. 
Nevertheless it is possible technically, as there is nothing that prevents you from implementing kernel module handling system call that returns user mapped pointer to kernel data (even if it is not very safe). 
There are couple of questions regarding the call you would like to have:

Memory management.  How would you know the memory can still be accessed after fancy_read system call returned? 
How would you tell the kernel to eventually free that memory?  There would need to be some form of memory management in place and if you would like kernel to give you a safe pointer to nonmemcpy'ed memory than a lot of changes would need to go into the kernel to enable this feature.  Just imagine that all that data couldn't be freed before you tell that it can, so kernel would need to keep track of all of these returned pointers. 

These could be done in a lot of ways, so basically yes, this is possible but you need to take many things into consideration. 