Ok it works, just want to give you a rundown before posting code.

you can store as many characters as your EEPROM Memory allows and you can load them individually or several at once to the LCD CGRAM (LCD Memory).
now there is a drawback but there is also a few bonuses.
1st Your LCD Can only display the Characters in memory, you cant display some and then chage the memory and add more.
2nd After changing the CGRAM any of these characters will be updated on display, even though you havent accessed the LCD again.
3rd This allows for ANIMATION woohoo! you can set a timer up to alternate sending updates to the lcd and animating a character.
4th This will allow you to animate or change characters on the fly

WARNING: Although this can animate and change characters, I have not been able to find information on the lifespan of CGRAM read/write cycles, this could be a problem if your animating characters or update alot. if anyone has any info on this please post.

So as my example I have 17 Custom Characters (I call sprites since the're pictures not letters)
I load the first 8 into CGRAM Memory, then display that to the LCD, pause for 1 second then update the CGRAM which updates whats on the LCD.
If someone wants a animation example I can do that too on request.

Code:
include "LCD_D.bas"

EEPROM 0,[4,4,4,31,0,14,0,4]         ' Cust Char #0
EEPROM 8,[14,31,17,17,17,17,17,31]   ' Cust Char #1
EEPROM 16,[14,31,17,17,31,31,31,31]   ' Cust Char #2
EEPROM 24,[10,10,31,31,14,4,4,2]      ' Cust Char #3
EEPROM 32,[14,17,17,17,10,14,14,4]    ' Cust Char #4
EEPROM 40,[4,31,0,14,0,31,0,14]      ' Cust Char #5
EEPROM 48,[0,0,8,21,2,0,0,0]         ' Cust Char #6
EEPROM 56,[4,2,4,14,31,31,31,14]     ' Cust Char #7
EEPROM 64,[0,17,19,23,19,17,0,0]      ' Cust Char #8
EEPROM 72,[0,2,4,8,4,2,0,0]           ' Cust Char #9
EEPROM 80,[0,0,14,14,14,0,0,0]        ' Cust Char #10
EEPROM 88,[0,0,10,10,10,0,0,0]        ' Cust Char #11
EEPROM 96,[0,8,12,14,12,8,0,0]        ' Cust Char #12
EEPROM 104,[0,8,4,2,4,8,0,0]          ' Cust Char #13
EEPROM 112,[0,17,9,5,9,17,0,0]        ' Cust Char #14
EEPROM 120,[0,0,14,10,14,0,0,0]       ' Cust Char #15
EEPROM 128,[$00,$0a,$0a,$00,$00,$11,$0e,$00] ' Cust Char #16

CGLOAD VAR WORD : CGLOAD = 0 ' Variable for holding Character # to Load
CGLLOC VAR BYTE : CGLLOC = 0 ' LCD Location to Store Character (0 to 7)
CGLOOP VAR BYTE                 ' Variable for Selecting Data Bits
CGDATA VAR BYTE[8]              ' Variables to Hold Character Data

LCDOUT $FE, 2
Pause 1000

PreLoadLCD:
CGLOAD = 0 : CGLLOC = 0
GOSUB SETCGLCD
CGLOAD = 1 : CGLLOC = 1
GOSUB SETCGLCD
CGLOAD = 2 : CGLLOC = 2
GOSUB SETCGLCD
CGLOAD = 3 : CGLLOC = 3
GOSUB SETCGLCD
CGLOAD = 4 : CGLLOC = 4
GOSUB SETCGLCD
CGLOAD = 5 : CGLLOC = 5
GOSUB SETCGLCD
CGLOAD = 6 : CGLLOC = 6
GOSUB SETCGLCD
CGLOAD = 7 : CGLLOC = 7
GOSUB SETCGLCD

MainLoop:
LCDOUT $FE, 2
LCDOUT $FE, $80  ' This locations characters will change after charater update
LCDOUT 0,1,2,3,4,5,6,7
Pause 1000
Goto Reloadlcd  'Used GOTO instead of GOSUB since it would be Stacking GOSUBs
AddLCD: 'Return point after changing LCD Memory
'Add more code here if you want

END

SETCGLCD:
CGLOAD = CGLOAD * 8 ' Converts your Character Selection to EEPROM Address
CGLLOC = (CGLLOC * 8) + 64  ' Converts LCD Slot to LCD Memory Address
for CGLOOP = CGLOAD to (CGLOAD + 7)'Sets 1st Memory Address to Read + Next 7
read CGLOOP, CGDATA[CGLOOP-CGLOAD] ' Stores each Byte into Array
next CGLOOP
LCDOUT $FE,CGLLOC,CGDATA[0],CGDATA[1],CGDATA[2], _
CGDATA[3],CGDATA[4],CGDATA[5],CGDATA[6],CGDATA[7]
Return

ReLoadLCD:
CGLOAD = 8 : CGLLOC = 0
GOSUB SETCGLCD
CGLOAD = 9 : CGLLOC = 1
GOSUB SETCGLCD
CGLOAD = 10 : CGLLOC = 2
GOSUB SETCGLCD
CGLOAD = 11 : CGLLOC = 3
GOSUB SETCGLCD
CGLOAD = 12 : CGLLOC = 4
GOSUB SETCGLCD
CGLOAD = 13 : CGLLOC = 5
GOSUB SETCGLCD
CGLOAD = 14 : CGLLOC = 6
GOSUB SETCGLCD
CGLOAD = 15 : CGLLOC = 7
GOSUB SETCGLCD
goto addlcd